Я пытаюсь загрузить некоторые данные в neo4j из CSV-файлов, и кажется, что возникает уникальная ошибка ограничения, когда это не следует делать.В частности, я создал ограничение, используя
CREATE CONSTRAINT ON (node:`researcher`) ASSERT node.`id_patstats` IS UNIQUE;
Затем, после вставки некоторых данных в neo4j, если я запустил (в браузере neo4j )
MATCH (n:researcher {id_patstats: "2789"})
RETURN n
Iне получить результатов ( без изменений, без записей ), но если я запусту
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM
'file:///home/manu/proyectos/PTL_RDIgraphs/rdigraphs/datamanager/tmp_patents/person906.csv' AS line
MERGE (n:researcher {`name` : line.`person_name`})
SET n.`id_patstats` = line.`person_id`;
, я получу
Neo.ClientError.Schema.ConstraintValidationFailed: Node(324016) уже существует с меткой researcher
и свойством id_patstats
= '2789'
, а содержимое файла person906.csv
равно
manu@cochi tmp_patents $cat person906.csv
person_id,person_name,doc_std_name,doc_std_name_id
2789,"li, jian",LI JIAN,2390
(это минимумнерабочий пример, извлеченный из большого набора данных, также в оригинальном «person906.csv» я убедился, что «id_patstats» действительно уникален).
Любая подсказка?
РЕДАКТИРОВАТЬ:
Все еще борется с этим ...
Если я запускаю
MATCH (n)
WHERE EXISTS(n.id_patstats)
RETURN DISTINCT "node" as entity, n.id_patstats AS id_patstats
LIMIT 25
UNION ALL
MATCH ()-[r]-()
WHERE EXISTS(r.id_patstats)
RETURN DISTINCT "relationship" AS entity, r.id_patstats AS id_patstats
LIMIT 25
(нажав в браузере neo4j, чтобы получить несколько примеров свойства id_patstats
), я получаю
(no changes, no records)
, то есть свойство id_patstats
нигде не установлено.Более того,
MATCH (n:researcher {`name` : "li, jian"})
SET n.`id_patstats` = XXX;
это всегда будет вызывать ошибку независимо от XXX , что (я полагаю) означает, что реальная проблема в том, что имя "li, jian" уже присутствует.Хотя я не установил никаких ограничений для свойства name
, я предполагаю, что neo4j выглядит следующим образом: вы пытаетесь установить свойство UNIQUE для узла, соответствующего свойству (имени), которое не обязательно является UNIQUE;следовательно, это совпадение может привести к нескольким узлам, и я не могу установить одинаковое свойство UNIQUE для всех них ... поэтому я даже не буду пытаться