Cypher Neo4j Не удалось загрузить внешний ресурс
В среде Windows я пытаюсь загрузить файл .csv с инструкцией:
LOAD CSV WITH HEADERS FROM "file:///E:/Neo4j/customers.csv" AS row
Кажется, что он не работает должным образом и возвращает:
Не удалось загрузить внешний ресурс по адресу:
Файл:/E:/Neo4j/Customers.csv Neo.TransientError.Statement.ExternalResourceFailure
Что я делаю неправильно? заранее спасибо
Ответы
Ответ 1
Я получал эту ошибку в Community Edition 3.0.1 в Mac OS X 10.10
Похоже, что LOAD CSV file:///
ищет файлы в предопределенном каталоге. Можно было бы подумать, что в аргументе, что один оператор Cypher дал бы полный путь, но это не так.
file:///
- для моей ситуации "означало, что neo4j добавит данный аргумент, который вы дали тому, который уже был предопределен, и затем идите в поисках этого комбинированного пути
Указанный каталог директорий file:///
не существует полностью
/Users/User/Documents/Neo4j/default.graphdb/import
, в моей структуре каталогов компьютеров у меня отсутствовала папка "/import", которая не была создана при установке
Чтобы исправить свою систему, я создал каталог "import", поместив файл в этот каталог. Я выполнил инструкцию загрузки Cypher. Я ТОЛЬКО ставил имя файла для чтения в аргументе файла i.e.
LOAD CSV file:///data.csv
это сработало для меня.
Ответ 2
Кажется, это конфигурация безопасности. Вот оригинальный ответ, который я нашел: fooobar.com/questions/550950/...
Вы можете добавить следующую команду в conf/neo4j.conf, чтобы обойти это:
dbms.security.allow_csv_import_from_file_urls=true
Или измените каталог импорта dbms.directories.import=import
Ответ 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
Вероятно, это проблема с URL-адресом, попробуйте file:c:/path/to/data.csv
Смотрите мои сообщения в блоге:
Ответ 5
В (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 (http://localhost:7474/browser/
), если вы используете веб-браузер в качестве интерфейса/графического интерфейса Neo4j.
Затем вы сможете загрузить csv из-за пределов вашего $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:///...
Ответ 6
На рабочем столе Neo4j выберите базу данных, которую вы используете, перейдите к настройке и там вы найдете решение... просто прокомментируйте строку "dbms.directories.import = import"
# Этот параметр ограничивает все файлы импорта LOAD CSV
находящимися в каталоге import
. Удалите или прокомментируйте это на
# разрешать загрузку файлов из любой точки файловой системы; это создает возможные проблемы с безопасностью. См.
# LOAD CSV
для подробностей.
dbms.directories.import = import ### COMMENT THIS LINE
Ответ 7
Для системы ubuntu я поместил файл в /usr/lib/neo4j
, который помог мне решить проблему. В каждом другом месте я пытался предоставить полные разрешения (777), но проблема осталась прежней. Перейдя через другую запись stackoverflow, я понял, что файл должен храниться в каталоге neo4j.
Ответ 8
Версия Neo4j - 3.1.1, ОС - win10.
Для меня LOAD CSV будет читать из Neo4j_Database_Location/testDB/import/artists.csv.
Сначала я помещаю файл csv на путь F:\code\java\helloworld\artists.csv, а мое предложение cypher
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, а "код/java/helloworld/artist.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 установлено значение импорта по умолчанию, использование вышеуказанных URL-адресов в LOAD CSV будет читать из /import/myfile.csv и import/myproject/myfile.csv соответственно. Если он установлен в /data/csv, использование вышеуказанных URL-адресов в LOAD CSV будет читать из /data/csv/myfile.csv и/data/csv/myproject/myfile.csv соответственно.
Ответ 9
- Установите свойство "dbms.directories.import = import"
- Создайте папку "import" явно в "/Users/User/Documents/Neo4j/default.graphdb/", потому что предопределенный каталог не существует полностью
- поместите набор данных CSV здесь в папке импорта
- затем запустите код как - ЗАГРУЗИТЬ CSV ИЗ "file:///C: /customers.csv" AS строки
Кроме того, после запуска строки вы можете проанализировать, что происходит в разделе кода, чтобы лучше понять
Ответ 10
Вы помещаете свой набор данных в каталог импорта по пути neo4j-community. Затем повторите команду.
Ответ 11
Для 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
Ответ 12
Я использую Neo4j Desktop и, как уже говорили, база данных графиков по умолчанию имеет предопределенное расположение для импорта. Вы можете найти местоположение с помощью пользовательского интерфейса. Если вы поместите CSV в каталог import
, то вы можете использовать относительный путь непосредственно из вашей команды load csv
![enter image description here]()