2016-02-24 68 views
2

我剛剛開始使用Neo4j,並且無法正確加載數據。這個問題我有我的數據是按以下格式:將數據加載到Neo4j中並創建關係

Col A | Col B | Num Messages| User 1 | User 8 | 1 | User 1 | User 2 | 2 | User 1 | User 5 | 1 | User 2 | User 7 | 1 | User 8 | User 1 | 4 | User 5 | User 2 | 1 |

我想要做的就是創建一個節點對應唯一的用戶,然後給出一個對錶的行之間的關係,同時考慮到帳戶用戶可以多次出現在這兩列,但消息發送不同的用戶

當我加載數據中我試圖使用以下命令:但是,這會創建重複項,我找不到方法來定義關係

LOAD CSV WITH HEADERS FROM "file:/data/neo_data_trial.csv" AS line 
CREATE (p:Players {id: line['1']}), (s:Players {id: line['2']}) 

我查看過文檔,找不到一個簡單的方法來做到這一點。有沒有人有任何建議,或可以指向正確的方向?

回答

2

你會想MERGE開始:

LOAD CSV WITH HEADERS FROM "file:/data/neo_data_trial.csv" AS line 
MERGE (p:Players {id: line['1']}) 
MERGE (s:Players {id: line['2']}) 

一旦你有,你可以創建關係:

LOAD CSV WITH HEADERS FROM "file:/data/neo_data_trial.csv" AS line 
MERGE (p:Players {id: line['1']}) 
MERGE (s:Players {id: line['2']}) 
CREATE (p)-[:PLAYS_WITH]->(s) 

我只是做了關係型PLAYS_WITH。當然,你可以自由改變它。

您也可以使用MERGE來創建關係。這取決於你是否想要文件中的每一行有一個唯一的關係(如果你不重複ps,它甚至可能沒有什麼區別)

+0

嘿,感謝您的快速回復,使用MERGE現在感覺,但是我得到這個奇怪的錯誤,似乎不喜歡它的任何信息:「無法合併節點使用null屬性值爲id」。我檢查了我的csv文件並且沒有空值 – Steve2056726

+0

我終於用MERGE解決了它(p:Players {name:line.id}) MERGE(s:Players {name:line.id}) CREATE(p) - [:PLAYS_WITH] - >(S);感謝您的幫助 – Steve2056726

+0

真棒,很高興你明白了! –