Как создать разные отношения в neo4j, используя py2neo для чтения CSV-файлов? - PullRequest
0 голосов
/ 23 апреля 2020

Я хотел бы прочитать в CSV-файле, где первые два столбца имеют имена узлов, а третий столбец имеет отношения узлов. В настоящее время я использую это в py2neo:

query2 = "" "

ИСПОЛЬЗОВАНИЕ PERIODI C COMMIT

ЗАГРУЗКА CSV С ЗАГОЛОВКАМИ ИЗ" файл: ///data.csv "AS line

MERGE (topi c: Topi c {name: line.Topic})

MERGE (result: Result {name: line.Result})

CREATE UNIQUE (topi c) - [: DISCUSSES] -> (результат)

"" "

Как использовать третий столбец в файле csv для установки отношения вместо того, чтобы все отношения были установлены как «ОБСУЖДАЕТ»?

Я пробовал это, но у него нет уникальной опции:

query1 = "" "

USING PERIODI C COMMIT

ЗАГРУЗИТЬ CSV С ЗАГОЛОВКАМИ ИЗ "file: ///data.csv" AS line

MERGE (topi c: Topi c {name: line. Тема})

MERGE (результат: Результат {name: line.Result})

MERGE (отношение: Relation {name: line.Relation})

WITH topi c, результат, строка

CALL apo c .merge.relationship (topi c, line.Relation, {}, {}, result) YIELD r el as rel1

RETURN topi c, результат

"" "

1 Ответ

0 голосов
/ 26 апреля 2020

На самом деле ваш второй запрос почти верен (за исключением того, что он содержит постороннее предложение MERGE). Вот исправленный запрос:

USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///data.csv" AS line
MERGE (topic:Topic {name: line.Topic})
MERGE (result:Result {name: line.Result})
WITH topic, result, line
CALL apoc.merge.relationship(topic, line.Relation, {}, {}, result) YIELD rel
RETURN topic, result

Вызов apoc.merge.relationship эквивалентен выполнению MERGE для создания отношения (с меткой Dynami c), если оно еще не существует.

...