2017-12-22 7 views
0

Ich benutze Neo4J Community Edition Version 3.2.1.Wie bekomme ich eine Beziehung von CSV in Neo4J/Cypher mit CSV LOAD

Betrachten Sie diese CSV-Datei mit Kanten:

node1,relation,node2,type 
1,RELATED_TO,2,Married 
2,RELATED_TO,1,Married 
1,RELATED_TO,3,Child 
2,RELATED_TO,3,Child 
3,RELATED_TO,4,Sibling 
3,RELATED_TO,5,Sibling 
4,RELATED_TO,5,Sibling 

ich allready die Knoten dafür geschaffen haben. Ich laufe dann den folgenden csv Ladebefehl:

load csv with headers from 
"file:///test_dataset/edges.csv" as line 
match (person1:Person {pid:line.node1}), 
    (person2:Person {pid:line.node2}) 
create (person1)-[:line.relation {type:line.type}]->(person2) 

Aber das gibt die folgenden Fehler:

Invalid input '.': expected an identifier character, whitespace, '|', a length specification, a property map or ']' (line 5, column 24 (offset: 167)) 
"create (person1)-[:line.relation {type:line.type}]->(person2)" 

Es scheint, dass ich nicht „line.relation“ wie diese verwenden kann. Wie kann ich die Relation aus der CSV-Datei (zweite Spalte) mit csv load verwenden?

Ich habe this answer gesehen, aber ich möchte dies mit nativer Abfragesprache tun.

Um sicherzustellen, dass der Rest der Abfrage korrekt ist mir gelungen, durch hartzucodieren die Beziehung wie diese die Kanten korrekt zu erstellen:

load csv with headers from 
"file:///test_dataset/edges.csv" as line 
match (person1:Person {pid:line.node1}), 
    (person2:Person {pid:line.node2}) 
create (person1)-[:RELATED_TO {type:line.type}]->(person2) 

Antwort

3

Nativ es nicht möglich ist einen Knoten mit einem dynamisch zu erstellen Etikett und eine Beziehung mit einem dynamischen Typ.

Deshalb gibt es ein Verfahren dafür.

Wenn Sie es nativ tun wollen, und Sie kennen alle den eindeutigen Wert Ihrer relation Spalte können Sie viele Chiffre Skript wie das (eine pro-Wert) erstellen:

LOAD CSV WITH HEADERS FROM "file:///test_dataset/edges.csv" AS line 
WITH line WHERE line.relation ='RELATED_TO' 
MATCH (person1:Person {pid:line.node1}) 
MATCH (person2:Person {pid:line.node2}) 
CREATE (person1)-[:RELATED_TO {type:line.type}]->(person2) 
+0

Dank. Dann werde ich in das Import-Tool schauen. –

Verwandte Themen