2015-02-08 38 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 =進口###註釋此行