neo4j的LOAD CSV返回错误信息:“无法加载外部资源- neo4j在目录中丢失”。

5
自从我开始使用Neo4j 3.0.1版本,这个Cypher查询语句如下:
USING PERIODIC COMMIT 500  
 LOAD CSV WITH HEADERS  
 FROM >"file:///home/user/Documents/links.csv" AS csvLine  

...

返回

Couldn't load the external resource at: file:/home/user/Documents/neo4j-community-3.0.1/import/home/user/Documents/links.csv

Neo4j位于我的机器(Ubuntu 14.04)中的"文档"文件夹中,作为"links.csv"文件。

(在2.xx版本的Neo4j中,此查询完美运行)

我不理解为什么Neo4j3.0尝试在"导入"文件夹中重新构建csv文件路径...
通过ftp将文件上传到通过http协议查询Neo4j的方式可以工作,因此这与"import"文件夹的访问权限无关。我的"links.csv"文件权限为664。

有什么想法吗?

4个回答

11

这是Neo4j 3.0中集成的一项安全功能,旨在防止脚本从不需要的目录(例如/etc/password)加载资源。

您可以在conf/neo4j.conf中添加以下设置以绕过此功能:

dbms.security.allow_csv_import_from_file_urls=true

或者将您的CSV文件放入导入目录中。


2
你应该将这一行从neo4j.conf文件中注释掉 行:
    dbms.directories.import=import

或者在导入时设置文件。

1
我遇到了类似的错误。在阅读了他人的答案后,我猜测这确实是一个安全问题。我的一个快速解决方法是将我的数据移动到 Neo4j/default.graphdb/import 目录下,因为 Neo4j 正试图重定向到该目录。在我的情况下,我需要创建 import 目录。现在,只要 my_data_dir 嵌套在 Neo4j/default.graphdb/import 下面,我就可以使用 "file:///my_data_dir/test.csv" 来加载我的文件了。
注意:我使用的是 Mac OS X El Capitan 10.11.6,并运行 Neo4j Community Edition 3.1.0-BETA1。

-1

来自配置文件 'neo4j.conf':

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

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