2015-09-20 2 views
1

Я новичок в Neo4j и перешел через некоторый пример и имел скромный успех импорта данных из csv-файлов (из реляционной базы данных). Я сумел создать узлы для людей легко:Создание связей Neo4j от файла импорта csv

USING PERIODIC COMMIT                         
LOAD CSV WITH HEADERS FROM "file:/home/xxx/Development/Database/exports/persons.csv" AS row    
MERGE (:Person {id: toInt(row.id)}); 

У меня есть второй файл CSV, содержащий строку для каждого отношения между 2 людьми, и я пытаюсь использовать следующий запрос Cypher, чтобы создать отношения с не увенчались успехом (нет данных возвращается, и ничего не изменилось):

USING PERIODIC COMMIT                         
LOAD CSV WITH HEADERS FROM "file:/home/xxxx/Development/Database/exports/person_relationship.csv" AS row     
MATCH (f:Person {id: toInt(row.from_person_id)}), (t:Person {id: toInt(row.to_person_id)})        
CREATE (f)-[:RELATED_TO]->(t); 

Как я говорю, лица создаются в порядке, но никакое количество подтасовки или примеров не может привести меня к правильной грамматике, чтобы создать отношения RELATED_TO.

Любая помощь приветствуется.

+0

Я тоже новичок в Neo4j, и есть в последнее время используется почти точно такой же код, что и вы должны делать почти то же самое. Все, что я могу сказать - ваш код выглядит правильно для моих новичков. Несомненно, вы уже проверили это, но уверены ли вы, что 'from_person_id' и' to_person_id' соответствуют 'id' in person.csv? – alan

+0

yep, проверил имена столбцов в течение нескольких раз ... спасибо – JLove

+0

Просто отметим, что я также попробовал инструкцию для создания отношений в сети ui (заменив держателей строк на фактические значения из строки, связь создается, как и ожидалось ... должно быть связано с извлечением данных из файла csv? – JLove

ответ

1

Ваше второе утверждение выглядит правильно. Можете ли вы поделиться несколькими строками заголовком своего файла?

Вы также можете проверить, что высчитывать использует, пытаясь это:

LOAD CSV WITH HEADERS FROM "file:/home/xxxx/Development/Database/exports/person_relationship.csv" AS row     
RETURN row, toInt(row.from_person_id), toInt(row.to_person_id) 
LIMIT 5; 

Также убедитесь, чтобы создать ограничение, чтобы ускорить его:

CREATE CONSTRAINT ON (p:Person) ASSERT p.id IS UNIQUE; 
+0

Хорошая информация, хороший способ отладки ... получается, что я использовал нестандартный разделитель; – JLove

Смежные вопросы