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.