通过在 Neo4j 中加载最近更新的 csv 文件,我面临更新节点的问题。因为它是一个大文件,我认为需要使用 apoc 程序。我通过加载没有 apoc 的外部更新文件来更新现有节点。但问题是我需要使用 apoc 并行更新它。这是我的文件元素
文件中的原始元素
ID,SHOPNAME,DIVISION,DISTRICT,THANA
1795,ARAFAT DISTRIBUTION,RAJSHAHI,JOYPURHAT,Panchbibi
1796,CONNECT DISTRIBUTION,DHAKA,GAZIPUR,Gazipur Sadar
1797,HUMAYUN KABIR,DHAKA,DHAKA,Demra
我已经从这个 CSV 创建了节点
然后我有另一个更新的文件 u.csv 更新的元素在下面给出
ID,SHOPNAME,DIVISION,DISTRICT,THANA
1795,ABC,RAJSHAHI,JOYPURHAT,Panchbibi
1796,XYZ,DHAKA,GAZIPUR,Gazipur Sadar
1797,HUMAYUN KABIR,DHAKA,DHAKA,Demra
没有 apoc 我的查询是
LOAD CSV FROM "file:///u.csv" AS line
MERGE (c:Agent {ID:line[0]})
ON MATCH SET c.SHOPNAME = line[1]
RETURN c
此代码更新了所需的列,但我有一个空白节点
{"ID":"ID"}
我的第一个问题是为什么会创建一个新的空白节点,我该如何解决这个问题
现在我想要它来更新大文件,所以我已经习惯了 apoc 程序进行批处理
使用 apoc 我的查询是
CALL apoc.periodic.iterate('LOAD CSV WITH HEADERS FROM "file:///u.csv" AS line return line','MERGE (p:Agent{ID:TOINTEGER(line.ID)}) ON MATCH SET p.SHOPNAME=TOINTEGER(line.SHOPNAME) ' ,{batchSize:10000, iterateList:true, parallel:true});
但我无法更新特定节点,而是创建了两个具有相关 ID 的节点,所以我在这里得到 5 个节点而不是 3 个节点
{"ID":1795}
{"ID":1796}
我对 neo4j 很陌生,但正在努力学习。请帮我解决我使用 neo4j 3.5.6 和 apoc 3.5.0.4 的问题