问题
I have a database of existing nodes and would like to add in additional relationships from a CSV file which looks like this:
stype,sname,sver,rel,dtype,dname,dver
A,aname,1.1,FRIEND,A,bname,2.2
B,bbb,1.2,ENEMY,A,bname,2.2
My LOAD CSV looks like this. The intent is to match two existing nodes then link with the values in the CSV:
LOAD CSV WITH HEADERS FROM "file:///c:/workspace/neo/demo.csv" as line
MATCH (s:line.stype {name:line.sname,version:line.sver}),
(d:line.dtype {name:line.dname,version:line.dver})
CREATE (s)-[:line.rel}]->(d)
RETURN COUNT(*);
Am getting this error when I try to set either the label or the relationship type:
Invalid input '.': expected an identifier character, whitespace, NodeLabel, a property map, ')' or a relationship pattern (line 2, column 14)
"MATCH (s:line.stype {name:line.sname,version:line.sver}),"
Is this supported?
回答1:
Well parameterized labels are not supported.
In your case you can add a WHERE statement specifying the label for the MATCH you want :
MATCH (s {name:line.sname,version:line.sver}), (d {name:line.dname,version:line.dver})
WHERE line.stype IN labels(s) AND line.dtype IN labels(d)
Cheers,
Chris
来源:https://stackoverflow.com/questions/24871552/how-to-set-relationship-type-and-label-in-load-csv