Я пытаюсь импортировать данные из базы данных MySQL в Neo4j, используя CSV-файлы в качестве посредника. Я следую за basic example, но не могу заставить его работать. Я импортирую две таблицы с этими запросами:Импорт CSV-отношений в 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);
Эта часть работает. Что не работает, когда я пытаюсь импортировать отношения:
//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);
Консоль принимает запрос без ошибки, но никогда не заканчивается. Он работает в течение нескольких дней с 100% процессором, 25% оперативной памяти, но незначительным использованием диска. В базе данных нет отношений.
Я сделал ошибку где-то, или это действительно так медленно? Файл project_persons.csv
имеет длину 13 миллионов строк, но не должен ли периодический коммит делать что-то, что появляется?
Это работает, но импорт всех данных является утомительным, даже когда я увеличил лимит. И по какой-то причине у меня осталось 200k отношений, которые не будут сливаться или удаляться. – Rachie
Согласен, быть утомительным. Что вы делаете, чтобы удалить нежелательные отношения? –
Я не знаю, что с ними делать, или даже если они нежелательны. – Rachie