neo4j: Cypher LOAD CSV с помощью uuid

Я начинаю работать с LOAD CSV Cypher для Neo4J, чтобы импортировать большие csv-файлы в мою БД. Я хотел бы добавить к каждому импортированному узлу уникальный идентификатор (uuid) в качестве свойства.

Моя попытка была:

LOAD CSV FROM "file:..." AS csvLine
CREATE (c:Customer { uuid: {uuid}, name: csvLine[0], code: csvLine[1]})

К сожалению, я получаю для каждого узла один и тот же UUID (хотя это функция, которая обычно генерирует новый UUID при вызове), похоже, что UUID генерируется 1 раз, а затем присоединяется к каждому узлу при создании узла и анализе csv-файла.,

Есть ли способ сгенерировать новый UUID для каждой импортированной CSV-строки, чтобы пометить узел?

Спасибо за ваши подсказки от Балаэль

2 ответа

Решение

Не уверен, где вы видели, что {uuid} является функцией. Он просто использует все, что вы передаете в качестве параметра "uuid".

Вам нужно будет сгенерировать uuid при создании CSV. В Cypher в настоящее время нет uuid() функция.

Один из способов обойти это:

LOAD CSV FROM "file:..." AS csvLine
CREATE (c:Customer { name: csvLine[0], code: csvLine[1]})
SET c.id = id(c)

Вы также можете использовать модуль GraphAware UUID.

Все, что вам нужно сделать, это поместить jar фреймворка и модуль uuid в каталог плагинов, добавить следующие 2 строки в neo4j.properties и перезапустить Neo4j.

com.graphaware.runtime.enabled=true
com.graphaware.module.UIDM.1=com.graphaware.module.uuid.UuidBootstrapper

Любой новый узел (независимо от того, как он создан) автоматически получит UUID.

Другие вопросы по тегам