neo4j load csv 使用注意项指南

原创 neo4jcsv

问题描述

在搭建好 neo4j 服务之后,按照官方 Tutorial: Import Data Into Neo4j 示例文档去导入我构建好的 csv 文件,很意外的报错了。

mfFbnUBu7q8jz0rpMH4y_20180723162343.jpg

我把 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

QkTwX3YfFKO2Gs7coBxq_20180723163132.jpg

既然如此,我就把 csv 文件全部放到 import 目录下,然后重新执行导入。

5u9UaEqrkL4nCwAYjioS_20180723165037.jpg

成功导入并且数据正常。

P2wbqOi4ScAaeksvUVM7_20180723165204.jpg

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.csvfile:///myproject/myfile.csv

  • 如果 dbms.directories.import 设置为默认值导入,则使用上述 URL LOAD CSV 将分别从 <NEO4J_HOME>/import/myfile.csv<NEO4J_HOME>/import/myproject/myfile.csv 读取。
  • 如果设置为 /data/csv,则使用上述 URL LOAD CSV 将分别从 /data/csv/myfile.csv/data/csv/myproject/myfile.csv 读取
如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论