2015-02-08 112 views
10

在Windows环境中,我试图加载with语句.csv文件:Cypher支架的Neo4j无法加载外部资源

LOAD CSV WITH HEADERS FROM "file:///E:/Neo4j/customers.csv" AS row 

它似乎无法正常工作,并返回: 未能进行加载外部资源为:

文件:/ E:/Neo4j/Customers.csv Neo.TransientError.Statement.ExternalResourceFailure

我在做什么错?在此先感谢

回答

0

对于ubuntu系统,我把文件在/usr/lib/neo4j帮助我解决了这个问题。在其他所有地方,我尝试给予完全权限(777),但问题依然存在。经过另一个stackoverflow后,我意识到该文件应该保存在neo4j目录中。

15

我在Mac OS X 10.10上发现了Community Edition 3.0.1上的此错误。看起来LOAD CSV file:///在预定义的目录中查找文件。人们会认为,人们会认为Cypher声明是完整路径,但事实并非如此。

file:/// - 我的情况”指的Neo4j会追加一个已经预定义,然后去寻找一个结合的通道 的file:///预定义的目录目录不存在完全 /Users/User/Documents/Neo4j/default.graphdb/import你给一个给定的参数,在我的计算机目录结构中,我缺少安装时未创建的“/ import”文件夹

要修复我的系统,我创建了一个“导入”目录,将该文件放在该目录中。执行Cypher加载语句我只将要读取的文件的名称放在文件参数中,即

LOAD CSV file:///data.csv 

这对我有用。

+0

你确认这在Windows上会类似吗? – 2016-05-27 22:36:21

+0

这是在Windows一样,你只是在你的/文件/目录的Neo4j数据库的配置目录中创建它。 – 2016-07-01 03:00:58

+0

这很有帮助! – 2016-11-04 10:09:44

4

它似乎是一个安全配置。以下是我发现的原始答案:https://stackoverflow.com/a/37444571/327004

您可以在conf/neo4j中添加以下设置。CONF为了绕过这个:

dbms.security.allow_csv_import_from_file_urls=true

或者更改进口目录dbms.directories.import=import

1

你可以找到答案的文件

"C:\Users\Jack\AppData\Roaming\Neo4j Community Edition\neo4j.conf" 

(上述“dbms.directories英寸导入=导入“)

对于版本neo4j-community_windows-x64_3_ 1_1您必须注释掉这一行,或者您必须创建文件夹\ import(不是通过安装创建的)并将文件添加到文件夹中。


有it's撰文指出,由于安全原因,他们只允许从\文档文件加载\ Neo4j的\ default.graphdb \ import文件夹

上#dbms.directories.import注释掉后=导入,你可以执行例如从

LOAD CSV FROM "file:///C:/Users/Jack/Documents/products.csv" AS row 

在neo4j.conf我didn't必须添加/套

dbms.security.allow_csv_import_from_file_urls=true 
0

Neo4j的版本是3.1.1,操作系统是win10。

对我来说,LOAD CSV会从读取Neo4j_Database_Location/testDB/import/artists.csv

起初,我把csv文件的路径F:\代码\ java的\ HelloWorld的\ artists.csv,和我的暗号句话

LOAD CSV FROM 'file:///F:\\code\\java\\helloworld\\artists.csv' AS line 
CREATE(:Artist {name:line[1],year:toInt(line[2])}) 

然后我得到返回的错误消息如下:

Couldn't load the external resource at: file:/D:/Neo4j/db/testDB/import/code/java/helloworld/artists.csv 

这意味着neo4j本身连接文件路径。 “D:/ Neo4j/db/testDB/import /”是Neo4j数据库位置,“code/java/helloworld/artists.csv”是csv文件位置。

例如,我在路径D:\ Neo4j \ Neo4j CE 3.1.1上安装Neo4j,而数据库放置是D:\ Neo4j \ db。我把CSV文件放在路径D:\ Neo4j \ db \ testDB \ import \ artist.csv中。如果路径中没有“导入”文件夹,则应该自己创建并将文件放在“导入”文件夹中。

然后,把你的CSV文件的路径,输入cyper一句:

LOAD CSV from 'file:///artist.csv' as LINE 
CREATE(:Artist {name:line[1],year:toInt(line[2])}) 

总之,一旦你把CSV文件在正确的道路,这个问题是可以解决的。

LOAD CSV developer-manal

相关的解释如果dbms.directories.import被设置为默认值的进口,使用LOAD CSV上述网址将从/import/myfile.csv和进口/ myproject的读/ myfile.csv分别。 如果它设置为/ data/csv,则使用LOAD CSV中的上述URL将分别从/data/csv/myfile.csv和/data/csv/myproject/myfile.csv中读取。

0

在Neo4j的桌面选择您正在使用的数据库,去设置,在那里你会找到解决办法......只是发表意见“dbms.directories.import =进口”行

#这设置将所有LOAD CSV导入文件限制在import目录下。删除或注释掉

#允许从文件系统的任何位置加载文件;这引入了可能的安全问题。参见手册中的详细的

LOAD CSV部分。

dbms.directories.import =进口###注释此行