2017-08-01 110 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

它的工作,谢谢队友 –