Cypher Neo4j Couldn't load the external resour

2019-03-18 17:42发布

In a Windows environment, I'm trying to load a .csv file with statement:

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

It seems not to work properly and returns: Couldn't load the external resource at:

file:/E:/Neo4j/Customers.csv Neo.TransientError.Statement.ExternalResourceFailure

What am I doing wrong? thanks in advance

标签: csv neo4j load
9条回答
Lonely孤独者°
2楼-- · 2019-03-18 18:21

In the Neo4j desktop select the database you are using, go to the setting and there you will find the solution... just comment the "dbms.directories.import=import" line

# 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 ### COMMENT THIS LINE

查看更多
Summer. ? 凉城
3楼-- · 2019-03-18 18:25

On (Arch) Linux + neo4j-community-3.4.0-alpha09, edit $NEO4J_HOME/conf /neo4j.conf:

  • uncomment or add: dbms.security.allow_csv_import_from_file_urls=true
  • comment: #dbms.directories.import=import

Restart neo4j (in terminal: neo4j restart), and reload the Neo4j Browser (http://localhost:7474/browser/) if you are using a web browser as your Neo4j interface/GUI.

Then, you should be able to load a csv from outside your $NEO4J_HOME/... directory

E.g.,

LOAD CSV WITH HEADERS FROM "file:///mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS ...

where my $NEO4J_HOME/ is /mnt/Vancouver/apps/neo4j/neo4j-community-3.4.0-alpha09/

LOAD CSV WITH HEADERS FROM "file:/mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS ...

also works, but not

LOAD CSV WITH HEADERS FROM "file://mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS...

or

LOAD CSV WITH HEADERS FROM "/mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS...

i.e. use ...file:/... or ...file:///...

查看更多
狗以群分
4楼-- · 2019-03-18 18:31

You can find the answer in the file

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

(above "dbms.directories.import=import")

For version neo4j-community_windows-x64_3_1_1 you have to comment out this line or you have to create the folder \import (which isn´t created through the installation) and add your file into the folder.


There it´s written that due to security reasons they only allow file load from the \Documents\Neo4j\default.graphdb\import folder

After commenting out on # dbms.directories.import=import , you can execute e.g. from

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

In neo4j.conf I didn´t have to add/set

dbms.security.allow_csv_import_from_file_urls=true
查看更多
欢心
5楼-- · 2019-03-18 18:31

For the ubuntu system, I placed the file in /usr/lib/neo4j which helped me solved the issue. On every other location, i tried giving full permissions(777) but the problem remains the same. After going through another stackoverflow post, i realized that the file should be kept in neo4j directory.

查看更多
Rolldiameter
6楼-- · 2019-03-18 18:37

It appears to be a security configuration. Here's the original answer I found: https://stackoverflow.com/a/37444571/327004

You can add the following setting in conf/neo4j.conf in order to bypass this :

dbms.security.allow_csv_import_from_file_urls=true

Or change the import directory dbms.directories.import=import

查看更多
你好瞎i
7楼-- · 2019-03-18 18:38

I was getting this error on Community Edition 3.0.1 on Mac OS X 10.10 It appears that the LOAD CSV file:/// looks for files in a predefined directory. One would think that in the argument that one would give the Cypher statement the full path but that is not the case.

The file:/// - for my situation" meant that neo4j would append the given argument you gave to one that was already predefined and then go look for that combined path The file:/// pre-defined directory directory did not exist entirely /Users/User/Documents/Neo4j/default.graphdb/import, in my computers directory structure I was missing the "/import" folder, which was not created at install

To fix on my system, I created an "import" directory, put the file to be read in that directory. I executed the Cypher load statement I ONLY put the name of the file to be read in the file argument i.e.

LOAD CSV file:///data.csv

this worked for me.

查看更多
登录 后发表回答