无法将CSV文件加载到Neo4j中。

3

我刚开始使用Neo4j,并尝试在YouTube上跟随教程学习如何将CSV文件导入Neo4j。

我正在使用以下代码通过使用Cypher来尝试将我的CSV导入到Neo4j中:

LOAD CSV WITH HEADERS FROM "file:/Users/MATT/Documents/LL.csv" As csvline
MATCH(n) RETURN n

然而,我一直收到这个错误:

Neo.ClientError.Statement.ExternalResourceFailed

任何帮助都将不胜感激 :)

2个回答

3

您需要将CSV文件放入Neo4j安装的导入目录中。对于OS X安装,此目录为<neo4j-home>/import

接下来,您的LOAD CSV语句将如下所示:

LOAD CSV WITH HEADERS FROM "file:///LL.csv" As csvline MATCH(n)
RETURN n

那就是说,文件的URL是相对于导入目录的。请查看Neo4j文件位置文档和CSV数据导入指南。

无法加载外部资源:file:/Users/MATT/Documents/Neo4j/default.graphdb/import/Users/MATT/Documents/LL.csv。我已经研究了您所说的内容,但无法解决问题。它似乎已经找到了该资源,但无法提取它。您的代码很有用,可能是由于我自己出现了错误。 - user6854784
1
尝试在neo4j.conf文件中添加以下行:dbms.security.allow_csv_import_from_file_urls=true - Bruno Peres
@Stabbathehut,你尝试过上面的建议了吗?谢谢! - Bruno Peres
一旦您将文件放入导入文件夹中,neo4j将使用相对于该文件夹的路径,因此您还需要更改命令为:LOAD CSV WITH HEADERS FROM "file://LL.csv" - pooshla
@BrunoPeres,你还需要像Robert Singh在下面提到的那样注释掉#dbms.directories.import=import。 - Sat

2

解决方案:

这是neo4j 3.0及以上版本中自动启用的安全功能。它禁止从文件系统中的任何位置加载文件。

您有两个解决方案/选项:

  1. 将设置保留不变,只需将要读取的所有CSV文件放置在安装目录(folder)下的"import"目录(folder)中即可。
  2. 更改安全功能以允许从文件系统中的任何目录导入CSV文件。

选项1:

此选项很简单,只需将要读取的所有CSV文件复制并粘贴到安装目录(folder)下的"import"目录(folder)中即可。

然后使用以下路径来加载文件(例如,要加载已粘贴到import目录(folder)中的CSV文件"data.csv"):

LOAD CSV file:///data.csv

选项2:

为了允许导入任何url或文件路径,您必须导航到neo4j.conf文件。该文件位于安装目录中的conf文件夹中。或者,您可以直接搜索“neo4j.conf”文件。

找到该文件后,使用记事本或其他工具打开它。然后确保下面的“dbms.security.allow_csv_import_from_file_urls=true”未被注释掉(删除“#”),并且下面的“dbms.directories.import = import”已被注释掉(添加“#”)。

# Determines if Cypher will allow using file URLs when loading data using
# `LOAD CSV`. Setting this value to `false` will cause Neo4j to fail `LOAD CSV`
# clauses that load data from the file system.
dbms.security.allow_csv_import_from_file_urls=true

# This setting constrains all `LOAD CSV` import files to be under the `import` directory. Remove or comment it out to
# allow files to be loaded from anywhere in the filesystem; this introduces possible security problems. See the
# `LOAD CSV` section of the manual for details.
#dbms.directories.import=import

注意:对于您在Neo4j中创建的每个数据库/图,您都必须导航到该数据库/图的neo4j.conf文件,并重复上述过程。 - Robert Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接