Как импортировать отношения между узлами одной и той же метки из файла csv в neo4j?

У меня есть два отдельных файла csv, которые мне нужно импортировать в мою базу данных neo4j. Первый файл содержит все узлы, которые я хочу импортировать. Информация классифицируется следующим образом:

                             id, Name 

                              1, Earth science

Для его импорта я успешно использовал следующий код:

ЗАГРУЗИТЬ CSV С ЗАГОЛОВКАМИ ИЗ строки 'file: ///Node_test.csv' AS

СОЗДАТЬ (: Дисциплина {id: toInt (line.id), name: line.Name})

Теперь я хочу импортировать свой файл отношений и создать все отношения между только что импортированными узлами. Информация в файле Relationship.csv классифицируется следующим образом:

                 RelationshipID, parentID, relationship_type, childID

                              1, 2, IS_A_PARENT_DISCIPLINE_OF, 5

Чтобы импортировать его, я безуспешно использовал следующий код:

ИСПОЛЬЗОВАНИЕ PERIODIC COMMIT 500 ЗАГРУЗИТЬ CSV С ЗАГОЛОВКАМИ ИЗ файла: ///relationship_test.csv AS csvLine

ПОИСКПОЗ (DParent: Discipline {id: toInt (csvLine.parentID)}), (DChild: Discipline {id: toInt (csvLine.childID)})

СОЗДАТЬ (DParent) - [: IS_A_PARENT_DISCIPLINE_OF {id: toInt (csvLine.RelationshipID)}] - ›(DChild)

Примечание: результат не показывает никаких ошибок, он просто не возвратил ни изменений, ни строк.

По ссылкам ниже можно найти другие найденные мной документы по данной теме; Я не нашел никакой документации, описывающей, как импортировать файлы csv для создания отношений между узлами одной и той же метки.

http://neo4j.com/docs/2.3.0-M01/cypherdoc-importing-csv-files-with-cypher.html

Как создать отношения для существующих узлов путем импорта файла csv в neo4j?

Spring Data Neo4j 4.0.0: невозможно создать взаимосвязь между узлами с одной и той же меткой


person miherb    schedule 15.07.2015    source источник
comment
Действительно ли ваш первый файл содержит строки для значений id 2 и 5?   -  person cybersam    schedule 16.07.2015
comment
да. И я почти уверен, что в первом файле отсутствуют идентификаторы, потому что я получаю сообщение об ошибке. Не так ли?   -  person miherb    schedule 16.07.2015
comment
Невозможность найти совпадение не рассматривается как ошибка.   -  person cybersam    schedule 16.07.2015
comment
Хорошо, сделаю вторую проверку. Спасибо!   -  person miherb    schedule 16.07.2015
comment
Файл отношений был проверен. Не в этом проблема. Есть другие идеи?   -  person miherb    schedule 21.07.2015


Ответы (1)


Ниже приводится содержимое файла import.cypher, который необходимо создать и запустить в оболочке neo4j для импорта данных ...

Важно то, что при сопоставлении и попытке создать отношения вам необходимо использовать команду MERGE

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:data/node.csv" AS row
CREATE (:Discipline{disciplineId: toInt(row.id), name: row.Name});

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:data/rels.csv" AS row
MATCH (parent:Discipline{disciplineId: toInt(row.parentID)})
MATCH (child:Discipline {disciplineId: toInt(row.childID)})
MERGE (parent)-[:IS_PARENT_DISCIPLINE_OF]->(child);
person Stéphane Fréchette    schedule 23.07.2015