Ich versuche, Daten aus einer MySQL-Datenbank in Neo4j zu importieren, wobei CSV-Dateien als Vermittler verwendet werden. Ich folge dem basic example, kann es aber nicht ganz zum Laufen bringen. Ich importiere zwei Tabellen mit diesen Abfragen:Importieren von CSV-Beziehungen zu Neo4j
//Import projects.
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/tmp/projects.csv" AS row
CREATE (:project
{
project_id: row.fan,
project_name: row.project_name
});
//Import people.
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/tmp/persons.csv" AS row
CREATE (:person
{
person_id: row.person_id,
person_name: row.person_name,
});
//Create indicies.
CREATE INDEX ON :project(project_id);
CREATE INDEX ON :project(project_name);
CREATE INDEX ON :person(person_id);
CREATE INDEX ON :person(person_name);
Dieser Teil funktioniert. Was ist funktioniert nicht, wenn ich versuche, die Beziehungen zu importieren:
//Create project-person relationships.
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/tmp/project_persons.csv" AS row
MATCH (project:project {project_id: row.project_id})
MATCH (person:person {person_id: row.person_id})
MERGE (person)-[:CONTRIBUTED]->(project);
Die Konsole die Abfrage ohne Fehler akzeptiert, aber nie beendet. Es läuft seit Tagen bei 100% CPU, 25% RAM, aber vernachlässigbarer Festplattenverbrauch. In den Datenbankinformationen werden keine Beziehungen angezeigt.
Habe ich irgendwo einen Fehler gemacht, oder ist es wirklich so langsam? Die project_persons.csv
Datei ist 13 Millionen Zeilen lang, aber sollte das periodische Commit nicht schon etwas auftauchen lassen?
Es funktioniert, aber das Importieren aller Daten ist mühsam, auch wenn ich das Limit erhöht habe. Und aus irgendeinem Grund habe ich 200k Relationen übrig, die nicht zusammengeführt oder gelöscht werden. – Rachie
Einverstanden, langweilig zu sein. Was machst du, um die unerwünschten Beziehungen zu löschen? –
Ich weiß nicht, was ich mit ihnen machen soll oder ob sie unerwünscht sind. – Rachie