Neo4j中已经有一些数据,数据以以下方式建模:
:A {ID:"123",Group:"ABC",Family:"XYZ"}
:B {ID:"456",Group:"ABC",Family:"XYZ"})
(:A)-[:SCORE{score:'2'}]-(:B)
现在, 我正在通过具有5列
的CSV文件导入一些新数据在新数据中,可以有一些新的A标识或一些新的B标识
问题:
如何使用CSV作为导入来编写密码来解决上述问题。
我第一次使用以下密码查询对数据进行建模:
using periodic commit LOAD CSV WITH HEADERS FROM "file:///ABC.csv" as line Merge(a:A{ID: line.A,Group:line.Group,Family:line.Family})
Merge(b:B{ID: line.A,Group:line.Group,Family:line.Family})
Merge(a)-[:Score{score:toFloat(line.Score)}]-(b)
注意:节点“ A”和“ B”的族和组都相同
谢谢。
答案 0 :(得分:1)
您可以MERGE
关系并在事实之后设置分数,这样它就不会为每个新值创建新的SCORE关系。
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///ABC.csv" AS line
MERGE (a:A {ID: line.A, Group:line.Group, Family:line.Family})
MERGE (b:B {ID: line.A, Group:line.Group, Family:line.Family})
MERGE (a)-[score:SCORE]-(b)
SET score.score = toFloat(line.Score)