Import CSV file in Neo4j 3.x via Cypher-Shell
我正在尝试通过 macOS 开发机器上的 Cypher Shell(而不是 Neo4j - Shell)将大型 CSV 文件导入 Neo4j 3.x。
导入语句在密码脚本文件中定义。
我已将 conf 文件中的正确导入目录设置为 "conf-path for import CSV files"。
当我按如下方式输入命令时:
1 | cat <path to the Cypher script file> | $NEO4J_HOME/bin/cypher-shell -u user -p password --format auto |
当 shell 尝试访问 CSV 文件时,会预先添加 Neo4j 应用程序的路径。这会导致这样的连接路径:
1 | file:/<path to the Neo4j App/neo4j-community-3.x>/file:<path to the CSV file set within conf>/Import.CSV |
这会引发"无法在...处加载外部资源"错误
Cypher 脚本已正确加载,因为前面的 CONSTRAINT 命令已按预期执行。 Cypher 脚本在尝试使用 "LOAD_CSV" 访问 CSV 文件时失败。
是否需要进行任何其他设置才能让 Cypher Shell 知道它不应该添加 Neo4j 应用程序目录?
我试图在文档中找到它,但运气不佳。
非常感谢任何帮助。
谢谢
克里德
开箱即用,可以导入 CSV 的唯一位置是
任何
这是有充分理由的;文件系统的保护非常重要,能够从任何位置导入任意 CSV 文件会扩大恶意上传和/或执行的攻击向量。
但是,如果要更改被认为是导入目录的目录,那是完全可以的。
您可以更改被视为导入文件夹的目录。
这可以通过在配置中设置
如果需要,您甚至可以在导入目录中设置目录层次结构,以便组织导入的文件。例如,您可以在导入目录中放置一个
如果您希望能够从任何位置上传,请将其设置为 "/"。
如果您将
请注意,此选项将使潜在攻击者更容易上传恶意导入脚本。
要简单地加载 CSV,您必须:
-
将其复制到 Neo4j 的
import 文件夹下 -
在您的密码脚本中,路径文件将是
file:///MY_CSV_FILE.csv