neo4j load csv 使用注意项指南
问题描述
在搭建好 neo4j 服务之后,按照官方 Tutorial: Import Data Into Neo4j 示例文档去导入我构建好的 csv 文件,很意外的报错了。
我把 suppliers.csv 文件放到了测试环境根目录,路径为 /suppliers.csv
,可是执行导入后提示找不到文件。
分析解决
neo4j 的错误日志还是很人性化的,提示找不到的路径为 file:/opt/neo4j-community-3.3.5/import/suppliers.csv
,意思就很清楚了。
原来 neo4j 默认的设置是把文件导入的根目录限制在当前库的 import
文件夹下:
vim /opt/neo4j-community-3.3.5/conf/neo4j.conf
既然如此,我就把 csv 文件全部放到 import
目录下,然后重新执行导入。
成功导入并且数据正常。
dbms.directories.import
有关 dbms.directories.import
配置项的描述和可配置值可参考官方配置项说明:dbms.directories.import。
设置 file:///
与 Cypher LOAD CSV
子句一起使用的 URL 的根目录。
这必须设置为数据库服务器的文件系统上的单个目录,并将使所有从 file:///
URL 相对于指定目录加载的请求(类似于 unix chroot 的操作)。默认值为 import
。
这是一种安全措施,可防止数据库访问标准导入目录之外的文件。设置 dbms.directories.import
为空删除此安全措施,而是允许访问 neo4j 所在系统上的任何文件。这是不推荐的。
文件 URL 解析是相对于 dbms.directories.import
目录的。例如,一个文件的 URL 通常会看起来像 file:///myfile.csv
或 file:///myproject/myfile.csv
。
- 如果
dbms.directories.import
设置为默认值导入,则使用上述 URLLOAD CSV
将分别从<NEO4J_HOME>/import/myfile.csv
和<NEO4J_HOME>/import/myproject/myfile.csv
读取。 - 如果设置为
/data/csv
,则使用上述 URLLOAD CSV
将分别从/data/csv/myfile.csv
和/data/csv/myproject/myfile.csv
读取