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

Ответ 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

  1. Установите свойство "dbms.directories.import = import"
  2. Создайте папку "import" явно в "/Users/User/Documents/Neo4j/default.graphdb/", потому что предопределенный каталог не существует полностью
  3. поместите набор данных CSV здесь в папке импорта
  4. затем запустите код как - ЗАГРУЗИТЬ 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 enter image description here