У меня есть файл со связями в этом формате:
!comment
!comment
nodeID nodeName edgeType nodeID
nodeID nodeName edgeType nodeID
nodeID nodeName edgeType nodeID
Я хочу импортировать узлы и ребра этого файла в мою базу данных neo4j.
Я попробовал следующие шаги:
- Создание уникального ограничения на идентификаторы узлов
- Чтение файла, пропуск строк комментариев, создание уникальных узлов из каждой строки (пропуск строки, если узел уже существует)
- Чтение файла, пропусккомментируйте строки, создавайте ребра из каждой строки
// Each node id is unique
CREATE CONSTRAINT ON (n:Node) ASSERT n.id IS UNIQUE
// For each row not starting by "!", create node if it doesn't exist
LOAD CSV FROM "file:///relationships.tsv" AS row
FIELDTERMINATOR '\t'
WITH row
WHERE NOT row =~ '^!.*'
CREATE (:Node {id: row[0], name: row[1]})
// For each row not starting by "!", create edge
LOAD CSV FROM "file:///relationships.tsv" AS row
FIELDTERMINATOR '\t'
WITH row
WHERE NOT row =~ '^!.*'
MATCH (n:Node), (m:Node)
WHERE n.id = row[0] AND m.id = row[3]
WITH n, m, row
CASE row[2]
WHEN 'F' THEN
CREATE UNIQUE (m)-[:Edge {type: 'friend'}]->(n)
WHEN 'P' THEN
CREATE UNIQUE (m)-[:Edge {type: 'partner'}]->(n)
END
Приведенный выше код не работает.Будучи новичком в шифровании, я не уверен, что делаю неправильно.В конечном итоге я хотел бы объединить шаги 2 и 3, чтобы один раз прочитать файл и покончить с ним.Как эффективно импортировать эти данные?