【问题标题】:Cypher Neo4j Couldn't load the external resourceCypher Neo4j 无法加载外部资源
【发布时间】:2015-02-08 20:07:46
【问题描述】:

在 Windows 环境中,我正在尝试使用以下语句加载 .csv 文件:

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

它似乎无法正常工作并返回: 无法在以下位置加载外部资源:

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

我做错了什么?提前致谢

【问题讨论】:

    标签: csv neo4j load


    【解决方案1】:

    我在 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
    

    这对我有用。

    【讨论】:

    • 您是否确认这在 Windows 上会类似?
    • 在 Windows 上也一样,你只需在 /Documents/Neo4j 目录下的数据库配置目录中创建它。
    • 这很有帮助!
    • 在 macos 上,它报告导入文件夹位置为/Users/xxx/Library/Application%20Support/com.Neo4j.Relate/Data/。注意%20。我花了几分钟才弄清楚这是一个空白区域的 html 代码,文件夹路径实际上是 /Users/xxx/Library/Application Support/com.Neo4j.Relate/Data/
    【解决方案2】:

    这似乎是一种安全配置。这是我找到的原始答案:https://stackoverflow.com/a/37444571/327004

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

    dbms.security.allow_csv_import_from_file_urls=true

    或者更改导入目录dbms.directories.import=import

    【讨论】:

    • 这可能不是特定问题的正确答案(因为此问题中的路径匹配,而我看到“file:/var/lib/neo4j/import/path/to/file”)但它为我解决了非常相似的“找不到存在但不在导入目录中的文件”问题。
    【解决方案3】:

    你可以在文件中找到答案

    "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
    

    【讨论】:

      【解决方案4】:

      在(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 界面/GUI,请重新启动 neo4j(在终端:neo4j restart),并重新加载 Neo4j 浏览器(http://localhost:7474/browser/)。

      然后,您应该能够从您的$NEO4J_HOME/... 目录之外加载 csv

      例如,

      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】:

        【讨论】:

        • 我正在使用 ubuntu 并且 1 尝试在浏览器上运行 url。对我来说,文件就在那里。我什至更改了文件的权限以检查资源加载失败是否是因为文件权限。没有任何帮助
        【解决方案6】:

        对于 ubuntu 系统,我将文件放在 /usr/lib/neo4j 中,这帮助我解决了问题。在所有其他位置,我尝试提供完全权限(777),但问题仍然存在。在浏览了另一个stackoverflow帖子后,我意识到该文件应该保存在neo4j目录中。

        【讨论】:

          【解决方案7】:

          在 Neo4j 桌面中选择您正在使用的数据库,进入设置,在那里您将找到解决方案...只需注释“dbms.directories.import=import”行

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

          # 允许从文件系统的任何地方加载文件;这引入了可能的安全问题。见

          #LOAD CSV手册部分了解详情。

          dbms.directories.import=import ### 评论此行

          【讨论】:

            【解决方案8】:

            对于macOS Mojave v 10.14.5

            实际上,我不得不从~/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-e2dd2a9c-d450-4639-861b-1e7e42b56b31/installation-3.5.5/conf/neo4j.conf 中取消注释dbms.directories.import=import 并重新启动服务。然后它起作用了。所有文件都必须放在import 目录中。

            运行命令LOAD CSV WITH HEADERS FROM 'FILE:/<yourCSV>.csv' as l return l

            【讨论】:

              【解决方案9】:

              我正在使用 Neo4j 桌面,正如其他人所说,默认图形数据库具有预定义的导入位置。您可以使用 UI 找到该位置。如果你把 CSV 放到 import 目录下,那么你可以直接从你的 load csv 命令中使用相对路径

              【讨论】:

                【解决方案10】:

                Neo4j 版本为 3.1.1,操作系统为 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文件位置。

                例如,我将 Neo4j 安装在路径 D:\Neo4j\Neo4j CE 3.1.1,数据库位置为 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文件放到正确的路径下,问题就可以解决了。

                LOAD CSV developer-manal中的相关说明

                如果 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 读取。

                【讨论】:

                  【解决方案11】:
                  1. 设置属性“dbms.directories.import=import”
                  2. 在“/Users/User/Documents/Neo4j/default.graphdb/”显式创建文件夹“import”,因为预定义的目录不完全存在
                  3. 将此处的csv数据集放在导入文件夹中
                  4. 然后运行类似的代码 - LOAD CSV FROM "file:///C:/customers.csv" AS 行

                  另外在你跑完线之后,你可以分析一下代码部分出了什么问题,以便更好地理解

                  【讨论】:

                    【解决方案12】:

                    您将数据集放入 neo4j-community 路径中的导入目录中。 然后重新运行你的命令。

                    【讨论】:

                      【解决方案13】:

                      将您的 csv 文件添加到 neo4j 安装指南的导入文件夹中。

                      1. 打开neo4j并启动你的项目图

                      2. 然后在打开的文件夹选项卡中打开导入文件夹

                      3. 将你的 csv 文件复制到这个文件夹中

                      4. 将你的加载语法中的那部分复制为 file:///C:/neo4j_module_datasets/test.csv,因为你的 neo4j 正在运行 在C盘

                      Snapshot for your reference

                      【讨论】:

                        【解决方案14】:

                        使用以下语法:

                        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/
                        

                        【讨论】:

                          【解决方案15】:

                          最简单的方法(注意安全)是通过 http 为您提供目录并使用 http 导入

                          • 在命令行中转到 csv 文件所在的文件夹
                          • 根据您的 python 环境运行以下命令。

                          Python 2 $ python -m SimpleHTTPServer 8000 蟒蛇 3 $ python3 -m http.server 8000 - 现在您可以从本地主机加载文件 从“http://localhost:8000/mycsvfile.csv”作为行加载 CSV 返回行 - 您实际上可以在一台主机上公开文件并将它们加载到您的数据库正在运行的位置,方法是公开文件夹并用您的 IP 替换 localhost

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 2014-11-26
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多