2017-05-18 2 views
0

Hallo alle, die Sie hilfreiche Leute!Erstellen einer Beziehung Neo4J während des Imports, wenn der Wert 1 ist

Ich wurde damit beauftragt, unser RDBM in eine Graph-Datenbank zu Testzwecken umzuwandeln. Ich benutze Neo4J und habe erfolgreich verschiedene Tabellen in ihre entsprechenden Knoten importiert. Ich habe jedoch einen leichten Schluckauf, wenn es um den Abteilungsknoten geht. Bestimmte Abteilungen sind mit einer bestimmten Abteilung verbunden. Innerhalb des RDBMS-Modells ist dies eine einfache Spalte mit dem Namen: Is_Partner, da diese Datenbank ursprünglich für einen bestimmten Partner eingerichtet wurde (daher das Ganze: Umzug in eine Graph-Datenbank-Sache).

Ich muss alle Abteilungen mit dem Is_Partner-Wert von 1 abgleichen und dem Partner, der den Wert 1 in Is_Partner hat, eine Beziehung zuweisen und sie einem bestimmten Partner zuweisen (Edge: ABBR, Value: HR). Ich habe das Drehbuch geschrieben, aber es sagt mir, es ist erfolgreich, aber 0 Bearbeitungen sind ...

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row 
MATCH (partner:Department {DepartmentID: row.DepartmentID}) 
WHERE row.IS_PARTNER = "1" 
MERGE (partner)-[:IS_PARTNER_OF]->(Department{ABBR: 'HR'}); 

ich ziemlich neu bin auf Graph-Datenbanken, aber ich weiß ganz gut Relationale Datenbanken. Jede Hilfe wäre willkommen.

Vielen Dank für Ihre Zeit,

Jim Perry

+0

Das ist richtig? 'MATCH (Partner: Abteilung {DepartmentID: row.DepartmentID})'. Warum ordnen Sie eine ": Abteilung" einer Variablen namens Partner zu? –

Antwort

2

Es gibt ein paar Probleme mit Ihrer Anfrage. Wenn Sie nach CSV filtern möchten, verwenden Sie die WITH Anweisung mit einem WHERE Filter. Auch möchten Sie MERGE HR-Abteilung Knoten getrennt und dann MERGE Beziehung separat.

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row 
WITH row WHERE row.IS_PARTNER = "1" 
MATCH (partner:Department {DepartmentID: row.DepartmentID}) 
MERGE (dept:Department{ABBR: 'HR'})) 
MERGE (partner)-[:IS_PARTNER_OF]->(dept); 

Wenn es noch no results/changes zurückkehren, überprüfen Sie, ob Ihre MATCH Aussage etwas zurück, wie dies in der Regel das Problem ist.

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row 
WITH row WHERE row.IS_PARTNER = "1" 
MATCH (partner:Department {DepartmentID: row.DepartmentID}) 
RETURN partner 
Verwandte Themen