Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Neo4j - Importieren Sie Daten aus einer CSV-Datei mit Cypher

Sie können Daten aus einer CSV-Datei (Comma Separated Values) in eine Neo4j-Datenbank importieren. Verwenden Sie dazu das LOAD CSV Klausel.

Die Möglichkeit, CSV-Dateien in Neo4j zu laden, erleichtert den Import von Daten aus einem anderen Datenbankmodell (z. B. einer relationalen Datenbank).

Mit Neo4j können Sie CSV-Dateien von einer lokalen oder entfernten URL laden.

Um auf eine lokal (auf dem Datenbankserver) gespeicherte Datei zuzugreifen, verwenden Sie file:/// URL. Andernfalls können Sie Remote-Dateien mit einem der HTTPS-, HTTP- und FTP-Protokolle importieren.

CSV-Datei laden

Laden wir eine CSV-Datei namens genres.csv unter Verwendung des HTTP-Protokolls. Es ist keine große Datei – sie enthält eine Liste von 115 Musikgenres, also werden 115 Knoten (und 230 Eigenschaften) erstellt.

Diese Datei wird auf Quackit.com gespeichert, sodass Sie diesen Code in Ihrem Neo4j-Browser ausführen können und er sollte direkt in Ihre Datenbank importiert werden (vorausgesetzt, Sie sind mit dem Internet verbunden).

Sie können die Datei auch hier herunterladen:genres.csv

LOAD CSV FROM 'https://www.quackit.com/neo4j/tutorial/genres.csv' AS line
CREATE (:Genre { GenreId: line[0], Name: line[1]})

Sie können bei Bedarf bestimmte Felder aus der CSV-Datei weglassen. Wenn Sie beispielsweise nicht möchten, dass das erste Feld in die Datenbank importiert wird, können Sie GenreId: line[0], einfach weglassen aus dem obigen Code.

Das Ausführen der obigen Anweisung sollte die folgende Erfolgsmeldung erzeugen:

Anschließend können Sie eine Abfrage durchführen, um die neu erstellten Knoten anzuzeigen:

MATCH (n:Genre) RETURN n

Was dazu führen sollte, dass die Knoten um den Datenvisualisierungsrahmen herum verstreut sind:

Importieren Sie eine CSV-Datei mit Kopfzeilen

Die vorherige CSV-Datei enthielt keine Header. Wenn die CSV-Datei Kopfzeilen enthält, können Sie WITH HEADERS verwenden .

Mit dieser Methode können Sie auch auf jedes Feld anhand seines Spalten-/Kopfzeilennamens verweisen.

Wir haben eine weitere CSV-Datei, diesmal mit Kopfzeilen. Diese Datei enthält eine Liste von Albumtiteln.

Auch dies ist keine große Datei – sie enthält eine Liste mit 32 Spuren, also werden 32 Knoten (und 96 Eigenschaften) erstellt.

Diese Datei ist auch auf Quackit.com gespeichert, sodass Sie diesen Code in Ihrem Neo4j-Browser ausführen können und er sollte direkt in Ihre Datenbank importiert werden (vorausgesetzt, Sie sind mit dem Internet verbunden).

Sie können die Datei auch hier herunterladen:tracks.csv

LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line
CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})

Dies sollte die folgende Erfolgsmeldung erzeugen:

Darauf folgte eine Abfrage, um die neu erstellten Knoten anzuzeigen:

MATCH (n:Track) RETURN n

Was dazu führen sollte, dass die neuen Knoten um den Datenvisualisierungsrahmen herum verstreut sind.

Klicken Sie auf die Zeilen Symbol, um jeden Knoten und seine drei Eigenschaften anzuzeigen:

Benutzerdefiniertes Feldtrennzeichen

Sie können bei Bedarf ein benutzerdefiniertes Feldtrennzeichen angeben. Sie könnten beispielsweise ein Semikolon anstelle eines Kommas angeben, wenn die CSV-Datei so formatiert ist.

Fügen Sie dazu einfach den FIELDTERMINATOR hinzu Klausel zur Aussage. So:

LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line FIELDTERMINATOR ';'
CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})

Große Dateien importieren

Wenn Sie eine Datei mit vielen Daten importieren, wird der PERODIC COMMIT Klausel kann praktisch sein.

Verwenden von PERIODIC COMMIT weist Neo4j an, die Daten nach einer bestimmten Anzahl von Zeilen festzuschreiben. Dies reduziert den Speicheraufwand des Transaktionsstatus.

Der Standardwert ist 1000 Zeilen, sodass die Daten alle tausend Zeilen festgeschrieben werden.

Um PERIODIC COMMIT zu verwenden Fügen Sie einfach USING PERIODIC COMMIT ein am Anfang der Anweisung (vor LOAD CSV )

Hier ist ein Beispiel:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line
CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})

Festlegen der Rate regelmäßiger Commits

Sie können die Rate auch vom Standardwert von 1000 Zeilen auf eine andere Zahl ändern. Fügen Sie einfach die Nummer nach USING PERIODIC COMMIT hinzu :

So:

USING PERIODIC COMMIT 800
LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line
CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})

CSV-Format/Anforderungen

Hier sind einige Informationen darüber, wie die CSV-Datei formatiert werden sollte, wenn LOAD CSV verwendet wird :

  • Die Zeichenkodierung muss UTF-8 sein.
  • Die Endzeilenterminierung ist systemabhängig, zum Beispiel \n unter Unix oder \r\n unter Windows.
  • Das Abschlusszeichen muss ein Komma , sein sofern nicht anders angegeben mit dem FIELDTERMINATOR Möglichkeit.
  • Das Zeichen für String-Anführungszeichen ist das doppelte Anführungszeichen " (Diese werden beim Einlesen der Daten abgezogen).
  • Alle Zeichen, die maskiert werden müssen, können mit dem Backslash \ maskiert werden Charakter.
  • LOAD CSV unterstützt mit gzip, Deflate und ZIP-Archiven komprimierte Ressourcen.