Neo4j - загрузить CSV и цепочку - PullRequest
1 голос
/ 02 октября 2019

Я хочу загрузить csv, временную шкалу упорядоченных событий, чтобы создать список узлов, но у меня возникают проблемы при создании отношения: Next для связывания двух строк.

LOAD CSV WITH HEADERS FROM "file:////events.csv" AS row
merge (:Event{id:row.id})-[:NEXT]-> ??? (:Event {id:row[+1].id)

Полагаю, один из подходов состоит в том, чтобы в CSV был столбец, указывающий на следующий идентификатор строки.

1 Ответ

0 голосов
/ 02 октября 2019

В следующих запросах предполагается, что узлы уже существуют. Если вы также хотите создать узлы по мере необходимости, замените MATCH на MERGE.

Опция 1:

Каждая строка в файле CSV может содержать переменнуюколичество идентификаторов узлов для узлов, которые должны быть соединены вместе в одну цепочку, по порядку. В этом случае CSV-файл не должен иметь строку заголовка.

LOAD CSV FROM "file:///events.csv" AS ids
UNWIND [i IN RANGE(1, SIZE(ids)-1) | {a: ids[i-1], b: ids[i]}] AS pair
MATCH (a:Event {id: pair.a})
MATCH (b:Event {id: pair.b})
MERGE (a)-[:NEXT]->(b)

Опция 2:

Каждая строка в CSV-файле может содержать только пару идентификаторов узлов, которые необходимыбыть соединенным вместе, в порядке. В этом случае CSV-файл может иметь строку заголовка, как показано в этом примере (с использованием a и b в качестве заголовков).

LOAD CSV WITH HEADERS FROM "file:///events.csv" AS pair
MATCH (a:Event {id: pair.a})
MATCH (b:Event {id: pair.b})
MERGE (a)-[:NEXT]->(b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...