2015-07-24 2 views
0

У меня уже есть узлы как «проекты» в моей базе данных. Также у меня есть теги в CSV. CSV-выглядит следующим образом:Neo4j: Как объединить существующие данные (в базе данных) и не существующие данные (в CSV)

|name| 
|Information1| 
|Information2| 
|...| 

Я хотел бы поставить их обоих вместе, так что один конкретный проект будет иметь всю информацию в формате CSV с соотношением «belongs_to». Результат должен выглядеть следующим образом:

Information1 - belongs_to -> Project1 
Information2 - belongs_to -> Project1 

Как я могу это сделать? Я пробовал разные вещи, но ничего не было прав.

Я думал, что я мог загрузить CSV первый и во-вторых, получить отношения, как:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:C:/.../projects.csv" AS row 
CREATE (:AddInformation {name: row.name}); 
... 

MATCH (p:PROJECT { id:1 }) 
WITH range(1,4) AS RANGE, p 
FOREACH (r IN RANGE | 
    MERGE (add:AddInformation { id:r })-[rel:belongs_to]->(p)) 

Это работает, но в данном случае были только новые AddInformation, не один я искал.

Итак, снова мой вопрос: как я могу объединить один проект (с отношениями) с информацией из конкретного CSV? (Будет ли это поможет идентифицировать AddInformation по идентификатору в CSV или добавить информацию, что они должны соответствовать конкретному проекту?)

С наилучшими пожеланиями, Finfan

ответ

0

FOREACH не является правильной для этого , Теперь я использовал второе свойство для моей AddInformation.

The CSV сейчас выглядит так:

|name  |property| 
|Information1|...  | 
|Information2|...  | 
|...   |...  | 

Итак, во-первых я загрузить этот CSV, во-вторых я использую эту команду:

MATCH (p:Project), (add:AddInformation) WHERE id(p)=8 AND HAS (add.property) 
    MERGE (add)-[:belongs_to]->(p) 

Потом я удалить этот объект и все хорошо.

MATCH (m {property:"Insert"}) REMOVE m.property RETURN m 
Смежные вопросы