在Windows环境中,我尝试使用statement:
加载.csv文件LOAD CSV WITH HEADERS FROM "file:///E:/Neo4j/customers.csv" AS row
似乎无法正常工作并返回: 无法在以下位置加载外部资源:
文件:/ E:/Neo4j/Customers.csv Neo.TransientError.Statement.ExternalResourceFailure
我做错了什么?提前谢谢
答案 0 :(得分:22)
我在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"文件夹,不是在安装时创建的
要修复我的系统,我创建了一个" import"目录,将要读取的文件放在该目录中。我执行了Cypher加载语句我只将要读取的文件的名称放在文件参数中,即
LOAD CSV file:///data.csv
这对我有用。
答案 1 :(得分:7)
它似乎是一种安全配置。这是我找到的原始答案:https://stackoverflow.com/a/37444571/327004
您可以在conf / neo4j.conf中添加以下设置以绕过此:
dbms.security.allow_csv_import_from_file_urls=true
或更改导入目录dbms.directories.import=import
答案 2 :(得分:4)
您可以在文件中找到答案
"C:\Users\Jack\AppData\Roaming\Neo4j Community Edition\neo4j.conf"
(上面的“dbms.directories.import = import”)
对于neo4j-community_windows-x64_3_1_1版本,你必须注释掉这一行,或者你必须创建文件夹\ import(它不是通过安装创建的)并将你的文件添加到文件夹中。
有人写道,由于安全原因,他们只允许来自\ Documents \ Neo4j \ default.graphdb \ import文件夹的文件加载
在评论#dbms.directories.import = import之后,你可以执行例如从
LOAD CSV FROM "file:///C:/Users/Jack/Documents/products.csv" AS row
在neo4j.conf中我没有添加/设置
dbms.security.allow_csv_import_from_file_urls=true
答案 3 :(得分:2)
可能是网址问题,请尝试file:c:/path/to/data.csv
查看我的博文:
答案 4 :(得分:2)
On(Arch)Linux + neo4j-community-3.4.0-alpha09
,编辑$NEO4J_HOME/conf
/neo4j.conf
:
dbms.security.allow_csv_import_from_file_urls=true
#dbms.directories.import=import
重新启动neo4j(在终端:neo4j restart
),如果您使用网络浏览器作为Neo4j界面/ GUI,则重新加载Neo4j浏览器(http://localhost:7474/browser/
)。
然后,您应该能够从$NEO4J_HOME/...
目录
如,
LOAD CSV WITH HEADERS FROM "file:///mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS ...
我的$NEO4J_HOME/
是/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 ...
也有效,但不是
LOAD CSV WITH HEADERS FROM "file://mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS...
或
LOAD CSV WITH HEADERS FROM "/mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS...
即。使用...file:/...
或...file:///...
答案 5 :(得分:1)
在Neo4j桌面中选择您正在使用的数据库,转到设置,您将找到解决方案......只需注释" dbms.directories.import = import"行
#此设置将所有LOAD CSV
导入文件限制在import
目录下。删除或评论
#允许从文件系统中的任何位置加载文件;这引入了可能的安全问题。见
有关详细信息,请参阅本手册的#LOAD CSV
部分。
dbms.directories.import = import ### COMMENT THIS LINE
答案 6 :(得分:0)
对于ubuntu系统,我将文件放在/usr/lib/neo4j
中,这帮助我解决了这个问题。在每个其他位置,我尝试给予完全权限(777),但问题仍然是相同的。经过另一个stackoverflow帖子后,我意识到该文件应保存在neo4j目录中。
答案 7 :(得分:0)
Neo4j版本是3.1.1,OS是win10。
对我来说,LOAD CSV会从 Neo4j_Database_Location / testDB / import / artists.csv 中读取。
首先,我把csv文件放在路径F:\ code \ 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,数据库loaction是D:\ Neo4j \ db。我将CSV文件放在路径D:\ Neo4j \ db \ testDB \ import \ artist.csv上。如果路径上没有文件夹“import”,则应自行创建并将文件放在“import”文件夹中。
然后,将您的csv文件放在路径中,并输入cyper语句:
LOAD CSV from 'file:///artist.csv' as LINE
CREATE(:Artist {name:line[1],year:toInt(line[2])})
总之,一旦将CSV文件放在正确的路径中,就可以解决问题。
中的相关解释如果dbms.directories.import设置为默认值import,则使用LOAD CSV中的上述URL将分别从/import/myfile.csv和import / myproject / myfile.csv中读取。 如果设置为/ data / csv,则在LOAD CSV中使用上述URL将分别从/data/csv/myfile.csv和/data/csv/myproject/myfile.csv中读取。
答案 8 :(得分:0)
另外,在运行该行之后,您可以在代码部分中分析出了什么问题以得到更好的理解
答案 9 :(得分:0)
您将数据集放在neo4j-community路径中的导入目录中。 然后重新运行您的命令。
答案 10 :(得分:0)
对于macOS Mojave v 10.14.5
实际上,我不得不从dbms.directories.import=import
取消注释~/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-e2dd2a9c-d450-4639-861b-1e7e42b56b31/installation-3.5.5/conf/neo4j.conf
并重新启动服务。然后它起作用了。所有文件都必须放置在import
目录中。
运行命令LOAD CSV WITH HEADERS FROM 'FILE:/<yourCSV>.csv' as l return l
答案 11 :(得分:0)
我正在使用Neo4j Desktop,正如其他人所说,默认图形数据库具有预定义的导入位置。您可以使用用户界面找到位置。如果将CSV放入 jQuery.getJSON('json/animals.aspx')
.done( function( data ) {
data = $.map(data, function(item) {
// replace item. id and text with your animal json properties.
return { id: item.id, text: item.name};
});
jQuery('#animals').select2({
placeholder: 'Type any ....',
allowClear: true,
minimumInputLength: 0,
multiple: true,
data: data
});
}
);
目录中,则可以直接通过import
命令使用相对路径
答案 12 :(得分:0)
将您的csv文件添加到neo4j安装指南的import文件夹中。
打开neo4j并启动您的项目图
然后在“打开文件夹”选项卡中打开导入文件夹
在此文件夹中复制ur csv文件
因为ur neo4j正在运行,所以将您的加载语法中的该部分复制为file:/// C:/neo4j_module_datasets/test.csv 在C盘中
答案 13 :(得分:0)
使用以下语法:
LOAD CSV WITH HEADERS FROM "file:///my_collection.csv" AS row CREATE (n:myCollection) SET n = row
如果您正在运行docker,请在运行上面的查询之前遵循以下命令:
docker run \
-p=7474:7474 \
-p=7687:7687 \
-v=$HOME/neo4j/data:/data \
-v=$HOME/neo4j/logs:/logs \
-v=$HOME/local_import_dir:/var/lib/neo4j/import \
neo4j:3.0
然后
sudo cp my_collection.csv /home/bajju/local_import_dir/
答案 14 :(得分:-1)
最简单的方法(请注意安全性)是通过http为您提供目录并使用http导入
Python 2 $ python -m SimpleHTTPServer 8000 Python 3 $ python3 -m http.server 8000 -现在您可以从本地主机加载文件 从“ http://localhost:8000/mycsvfile.csv” AS行加载CSV 返回行 -实际上,您可以通过公开文件夹并将localhost替换为IP来将文件公开到一台主机上,并将其加载到运行DB的地方