2017-08-01 106 views
0

我很新CYPHER查詢語言而我正在研究節點之間的關係。 我有一個包含多列和1000行的表的CSV文件。 模板我的表是:FOREACH in cypher - neo4j

cdrType ANUMBER BNUMBER DUARTION  
2   123  456  10 
2   890  456  5 
2   123  666  2 
2   123  709  7 
2   345  789  20 

我已經使用這些命令來創建節點和屬性鍵。

LOAD CSV WITH HEADERS FROM "file:///2.csv" AS ROW 
CREATE (:ANUMBER {aNumber:ROW.aNumber}), 
CREATE (:BNUMBER {bNumber:ROW.bNumber}) 

現在我需要在表中創建的所有行之間的關係,我認爲foreach循環最好是在我的情況。我創建了這個查詢,但它給了我一個錯誤。查詢是:

MATCH (a:ANUMBER),(b:BNUMBER) 
FOREACH(i in RANGE(0, length(ANUMBER)) | 
    CREATE UNIQUE (ANUMBER[i])-[s:CALLED]->(BNUMBER[i])) 

和錯誤是:

無效的輸入 '[':預期的標識符字符,空格 NodeLabel,一個特性圖, ')' 或關係圖案(線3, 柱29(偏移量:100)) 「CREATE UNIQUE (一個:A-號碼[1]) - [S:CALLED] - >(b:B-號碼[1]))」

我需要關係爲每一行。就像我的情況一樣。 123 - 調用 - > 456,890 - 調用 - > 456.所以我需要這個調用數據的視覺表示,哪個數字調用哪一個。爲此,我需要在所有行之間創建關係。

任何一個有想法如何解決這個問題?

回答

2

什麼:

LOAD CSV WITH HEADERS FROM "file:///2.csv" AS ROW 
CREATE (a:ANUMBER {aNumber:ROW.aNumber}) 
CREATE (b:BNUMBER {bNumber:ROW.bNumber}) 
MERGE (a)-[:CALLED]->(b); 

這不是比i.m.o.更復雜

希望這會有所幫助!

Regards, Tom

+0

它的工作,謝謝隊友 –