2016-06-01 5 views
0

Ich versuche, ein Diagramm durch Importieren von CSV-Datei zu Neo4j zu erstellen, aber meine Datensätze enthält einige Leerzeichen, so Neo4j nicht erlaubt, einen Knoten zu erstellennicht möglich, eine CSV-Datei zu importieren, die leere Leerzeichen in ihren Datensätzen in Neo4j Grafikdatenbanken enthält

vermag ich nicht mit etwas anderem in graph-Datenbanken leeren Raum zu ersetzen meinen Code

LOAD CSV WITH HEADERS FROM "https://s3.amazonaws.com/xyz/test.csv" AS db 

merge (dbn:dbname {name: db.origin }) 
merge (dbs:dbschema {name: db.dest}) 
merge (dbo:dbobj {name: db.via}) 


create (dbn)-[:via]->(dbs)-[:to]->(dbo) 
return dbn,dbs,dbo 

die cSV-Datei Daten ist so etwas wie dieses,

Herkunft dest über

ny  hk  la 
ny  moscow ft 
ny  london 
ny  mumbai dubai 

jetzt von New York nach London direkt ist so nicht „über“

aber wenn ich Knoten erstelle ich einen Knoten für leere Knoten brauchen lassen Sie es mit dem Namen sein null

+0

Ihre Anfrage und das CSV-Beispiel gehören nicht zusammen? Würde helfen, die echte Abfrage und echte Daten zu posten. –

+0

getan mit den Änderungen, die Sie vorgeschlagen, früher hielt ich verschiedene Abfrage und csv für die Sicherheit –

+0

In einem Diagramm macht ein leerer 'Via' Knoten nicht viel Sinn. Ich würde den Datensatz teilen und 'to' Beziehungen von' dbn' zu 'dbo' id erstellen, es gibt keinen Halt dazwischen. –

Antwort

0

Vielleicht haben Sie die Zeilen ignorieren konnte wo die via-Spalte keinen Wert hat?

LOAD CSV WITH HEADERS FROM "https://s3.amazonaws.com/xyz/test.csv" AS db 
WITH db 
WHERE db.via IS NOT NULL 
merge (dbn:dbname {name: db.referencing_DB_Name }) 
merge (dbs:dbschema {name: db.referencing_schema}) 
merge (dbo:dbobj {name: db.referencing_object_name}) 
merge (dbd:dbrdb {name: db.referenced_database}) 
merge (dbrs:dbrdsch {name: db.referenced_schema}) 
merge (dbro:dbrdobj {name: db.referenced_object_name}) 

create (dbn)-[:referencing_schema]->(dbs)-[:referencing_object_name]->(dbo)-[:referenced_database]->(dbd)-[:referenced_schema]->(dbrs)-[:referenced_object_name]->(dbro) 
return dbn,dbs,dbo,dbd,dbrs,dbro 
+0

Hallo danke für deine Antwort, es funktioniert, aber es löscht die ganze Reihe, wo ein leerer Raum vorhanden ist, aber ich brauche diese Reihe auch, nur ich muss etwas wie "emptyData" als Knotenname platzieren –

0

können Sie die coalesce() function verwenden mit Nullwerten im csv zu beschäftigen. Coalesce wertet mit dem ersten Nicht-Null-Argument an sie übergeben, wenn Sie so wollen „emptyData“ für die name Eigenschaft des DBObj Knoten verwenden, wenn es in der CSV-Datei wird nicht nur etwas tun, wie folgt aus:

LOAD CSV WITH HEADERS FROM "http://some.url.com/file.csv" AS row 
MERGE (dbn:DBName {name: row.origin }) 
MERGE (dbs:DBSchema {name: row.dest}) 
MERGE (dbo:DBObj {name: coalesce(row.via, "emptyData")}) 
CREATE (dbn)-[:via]->(dbs)-[:to]->(dbo) 
return dbn,dbs,dbo