0
votes

I am very new to CYPHER QUERY LANGUAGE AND i am working on relationships between nodes. I have a CSV file of table containing multiple columns and 1000 rows. Template of my table is :

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

I have used these commands to create nodes and property keys.

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

Now I need to create relation between all rows in the table and I think FOREACH loop is best in my case. I created this query but it gives me an error. Query is :

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

and the error is :

Invalid input '[': expected an identifier character, whitespace, NodeLabel, a property map, ')' or a relationship pattern (line 3, column 29 (offset: 100)) " CREATE UNIQUE (a:ANUMBER[i])-[s:CALLED]->(b:BNUMBER[i]))"

I need relation for every row. like in my case. 123 - called -> 456 , 890 - called -> 456. So I need visual representation of this calling data that which number called which one. For this I need to create relation between all rows.

any one have idea how to solve this ?

1

1 Answers

2
votes

What about :

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);

It's not more complex than that i.m.o.

Hope this helps !

Regards, Tom