web-dev-qa-db-fra.com

Cypher Neo4j Impossible de charger la ressource externe

Dans un environnement Windows, j'essaie de charger un fichier .csv avec la déclaration suivante:

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

Il semble ne pas fonctionner correctement et renvoie: Impossible de charger la ressource externe à: 

fichier:/E: /Neo4j/Customers.csv Neo.TransientError.Statement.ExternalResourceFailure

Qu'est-ce que je fais mal? Merci d'avance

12
user13568

Je recevais cette erreur sur Community Edition 3.0.1 sur Mac OS X 10.10 Il semble que LOAD CSV file:/// cherche des fichiers dans un répertoire prédéfini. On pourrait penser que dans l’argument selon lequel on donnerait à l’énoncé Cypher le chemin complet mais ce n’est pas le cas. 

Le file:/// - pour ma situation "signifiait que neo4j ajoutait l'argument donné que vous aviez donné à un argument déjà prédéfini, puis cherchait ce chemin combiné Le répertoire de répertoire file:/// prédéfini n'existe pas entièrement /Users/User/Documents/Neo4j/default.graphdb/import, dans la structure de répertoire de mon ordinateur, il me manquait le dossier "/ import", qui n'a pas été créé à l'installation

Pour réparer mon système, j'ai créé un répertoire "import", placez le fichier à lire dans ce répertoire. J'ai exécuté l'instruction de chargement Cypher. J'ai UNIQUEMENT mis le nom du fichier à lire dans l'argument de fichier i.e. 

LOAD CSV file:///data.csv

cela a fonctionné pour moi. 

20
Richard Avila

Cela semble être une configuration de sécurité. Voici la réponse originale que j'ai trouvée: https://stackoverflow.com/a/37444571/327004

Vous pouvez ajouter le paramètre suivant dans conf/neo4j.conf afin de contourner cela:

dbms.security.allow_csv_import_from_file_urls=true

Ou changez le répertoire d'importation dbms.directories.import=import

6
jackdbernier

Vous pouvez trouver la réponse dans le fichier 

"C:\Users\Jack\AppData\Roaming\Neo4j Community Edition\neo4j.conf"

(ci-dessus "dbms.directories.import = import")

Pour la version neo4j-community_windows-x64_3_1_1, vous devez mettre cette ligne en commentaire ou vous devez créer le dossier\import (qui n’a pas été créé par l’installation) et ajouter votre fichier dans le dossier.


Pour des raisons de sécurité, ils n’autorisent le chargement de fichier que depuis le dossier\Documents\Neo4j\default.graphdb\import

Après avoir commenté # dbms.directories.import = import, vous pouvez exécuter par exemple de

LOAD CSV FROM "file:///C:/Users/Jack/Documents/products.csv" AS row 

Dans neo4j.conf je n'ai pas eu à ajouter/définir

dbms.security.allow_csv_import_from_file_urls=true
3
InLaw

C'est probablement un problème d'URL, essayez file:c:/path/to/data.csv

Voir mes articles de blog: 

2
Michael Hunger

Dans le bureau Neo4j, sélectionnez la base de données que vous utilisez, accédez au paramètre et vous y trouverez la solution ... commentez simplement la ligne "dbms.directories.import = import" 

# Ce paramètre contraint tous les fichiers d'importation LOAD CSV à se trouver dans le répertoire import. Supprimer ou commenter 

# permettre aux fichiers d'être chargés n'importe où dans le système de fichiers; cela introduit des problèmes de sécurité possibles. Voir le

# LOAD CSV section du manuel pour plus de détails.

dbms.directories.import = importer ### COMMENT CETTE LIGNE

1
Peeyush

Sous (Arch) Linux + neo4j-community-3.4.0-alpha09, éditez $NEO4J_HOME/conf /neo4j.conf:

  • décommentez ou ajoutez: dbms.security.allow_csv_import_from_file_urls=true
  • commentaire: #dbms.directories.import=import

Redémarrez neo4j (dans le terminal: neo4j restart) et rechargez le navigateur Neo4j (http://localhost:7474/browser/) si vous utilisez un navigateur Web comme interface/interface graphique Neo4j.

Ensuite, vous devriez pouvoir charger un csv en dehors de votre répertoire $NEO4J_HOME/...

Par exemple.,

LOAD CSV WITH HEADERS FROM "file:///mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS ...

où mon $NEO4J_HOME/ est /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 ...

fonctionne aussi, mais pas

LOAD CSV WITH HEADERS FROM "file://mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS...

ou

LOAD CSV WITH HEADERS FROM "/mnt/Vancouver/Programming/data/metabolism/practice/a.csv" AS...

i.e. utiliser ...file:/... ou ...file:///...

1
Victoria Stuart
  1. Définissez la propriété "dbms.directories.import = import"
  2. Créez le dossier 'importation' explicitement dans "/Users/User/Documents/Neo4j/default.graphdb/" car le répertoire prédéfini n'existe pas entièrement
  3. placez les données csv définies ici dans le dossier d'importation
  4. puis exécutez le code comme - LOAD CSV FROM "file: /// C: /customers.csv" AS row

De plus, après avoir exécuté la ligne, vous pouvez analyser ce qui ne va pas dans la section de code pour mieux comprendre.

0
Prashanth Kumar Arja

Pour le système Ubuntu, j'ai placé le fichier dans /usr/lib/neo4j, ce qui m'a aidé à résoudre le problème. Sur tous les autres sites, j'ai essayé de donner des autorisations complètes (777) mais le problème reste le même. Après être passé par un autre poste de stackoverflow, j’ai réalisé que le fichier devait être conservé dans le répertoire neo4j.

0
proprius

La version de Neo4j est 3.1.1, le système d'exploitation est win10. 

Pour moi, LOAD CSV lirait à partir de Neo4j_Database_Location/testDB/import/artists.csv.

Au début, je mets le fichier csv sur le chemin F:\code\Java\helloworld\artists.csv, et ma phrase cypher est 

LOAD CSV FROM 'file:///F:\\code\\Java\\helloworld\\artists.csv' AS line  
CREATE(:Artist {name:line[1],year:toInt(line[2])})

Ensuite, je reçois le message d'erreur renvoyé comme suit:

Couldn't load the external resource at: file:/D:/Neo4j/db/testDB/import/code/Java/helloworld/artists.csv

Cela signifie que neo4j concerte lui-même le chemin du fichier . "D:/Neo4j/db/testDB/import /" est l'emplacement de la base de données Neo4j et que "code/Java/helloworld/artists.csv" est l'emplacement du fichier csv.

Par exemple, j'installe Neo4j sur le chemin D:\Neo4j\Neo4j CE 3.1.1 et la base de données est D:\Neo4j\db. Je mets le fichier CSV sur le chemin D:\Neo4j\db\testDB\import\artist.csv. Si vous n'avez pas le dossier "import" sur le chemin, vous devez le créer vous-même et placer votre fichier dans le dossier "import".

Ensuite, placez votre fichier csv dans le chemin et saisissez la phrase suivante:

LOAD CSV from 'file:///artist.csv' as LINE
CREATE(:Artist {name:line[1],year:toInt(line[2])})

Dans un Word, le problème peut être résolu une fois que vous avez placé le fichier CSV dans le bon chemin.

Explication associée dans LOAD CSV developer-manal

Si dbms.directories.import est défini sur la valeur par défaut import, l'utilisation des URL ci-dessus dans LOAD CSV lirait respectivement dans /import/myfile.csv et import/myproject/myfile.csv . S'il est défini sur/data/csv, l'utilisation des URL ci-dessus dans LOAD CSV lirait respectivement dans /data/csv/myfile.csv et /data/csv/myproject/myfile.csv.

0
KAIQI YUAN