2017-05-15 7 views
0

Ich bin neu in Neo4j und ich versuche, Daten aus zwei CSV-Dateien zu importieren, aber ich bin nicht in der Lage, es zu tun. Die beiden CSV-Dateien haben die folgende Struktur:So importieren Sie Daten aus CSV-Datei

Master.csv:

ID NAME LASTNAME  COLLEGE 
01 aaa  bbb   ABC 
02 xxx  yyy   BCE 

award.csv:

playerID award     year 
01   best_player   2010 
01   rookie_of_the_year  2011 
02   best_player   2012 

Wie kann ich Knoten für pl Ayers und Auszeichnungen und wie kann ich sie verbinden?

Ich habe versucht, diesen Code verwenden: (aber es ist offensichtlich nicht funktioniert)

CREATE CONSTRAINT ON (a:PLAYER) ASSERT a.id IS UNIQUE; 

CREATE CONSTRAINT ON (b:AWARD) ASSERT b.award IS UNIQUE; 

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "File:///master.csv" as line fieldterminator ';' 
CREATE (:PLAYER {id:line.playerID, name:line.firstName, lastName:line.lastName}); 

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "File:///award.csv" as line fieldterminator ';' 
MATCH (player:Player {id:line.playerID}) 
MERGE (award:AWARD {award:line.award}) 
CREATE (player)-[r:won]->(award) 
set r += {year:line.year} 

Wenn ich auch Knoten für Hochschulen hinzufügen würde, ist es richtig?

CREATE CONSTRAINT ON (c:COLLEGE) ASSERT c.name IS UNIQUE; 

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///master.csv" as line fieldterminator ';' 
WITH line 
MATCH (player:PLAYER {id:line.playerID}) 
MERGE (college:COLLEGE {name:line.college}}) 
CREATE (player)-[:studied]->(college) 

Dank

+0

* ... MATCH (Spieler: Spieler) ... – manfr27

+0

Alles sieht gut aus, das Problem könnte sein, dass Sie versuchen, es in einer einzigen Transaktion auszuführen ... Sie müssen jede Einschränkung in einer separaten Transaktion erstellen und dann die erste LOAD CSV und die zweite separat ausführen –

+0

Ja, ich führe jede Abfrage einzeln aus. Könnte das Problem auf den CSV-Dateien sein? – manfr27

Antwort

0

Soweit ich seine in erster Linie eine Frage der Verwendung des richtigen CASE/case/Case in Ihre Aussagen zu sehen. Nach dem, was Sie angezeigt die Eingangs ich mit diesem kam zu sein (für mich arbeiten):

CREATE CONSTRAINT ON (a:PLAYER) ASSERT a.id IS UNIQUE; 
CREATE CONSTRAINT ON (b:AWARD) ASSERT b.award IS UNIQUE; 

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///master.csv" as line fieldterminator ';' 
CREATE (:PLAYER {id:line.bioID, name:line.firstName, lastName:line.lastName}); 

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///award_players.csv" as line fieldterminator ';' 
WITH line 
MATCH (player:PLAYER {id:line.playerID}) 
MERGE (award:AWARD {award:line.award}) 
CREATE (player)-[r:won]->(award) 
SET r += {year:line.year}; 

hoffe, das hilft, Tom

+0

Zunächst einmal danke für die Beantwortung von mir, aber wenn ich den zweiten Befehl ausführen, gibt es mir folgendes: (keine Änderungen, keine Datensätze) – manfr27

+0

Können Sie den tatsächlichen Inhalt (Header und erste paar Zeilen) der Eingabe teilen -files (das obige kann nicht von ihnen sein, da du sagst, dass du es benutzt; als Trennzeichen). Wenn sich etwas von Fall zu Fall unterscheidet, wird es nicht funktionieren. –

+0

Ja sicher, beide Dateien haben das gleiche Format. https://www.dropbox.com/s/mgjcsh6b7k9v63c/award_players.csv?dl=0 Ich habe auch versucht mit fieldterminator ‚\ t‘, haben aber das gleiche Ergebnis – manfr27

Verwandte Themen