我正在使用 LOAD CSV 命令加载文件,但我遇到了一个奇怪的情况,当新行在“匹配”块中添加了一个属性时。
这是代码:
USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM 'file://1.csv'
AS line
FIELDTERMINATOR '|'
WITH line, split(line.list_ites, ',') AS items UNWIND items AS _items
MERGE (session :Session { wz_session:line.session })
ON CREATE SET session.created = timestamp(),session.batch_id='60893068766'
ON MATCH SET session.updated = timestamp()
MERGE (hit :Hit { id:line.hit_id,date_time:TOINT(line.date_time) })
ON CREATE SET hit.created = timestamp()
ON MATCH SET hit.updated = timestamp()
FOREACH(q IN (CASE WHEN trim(line.list_ites) <> '&' THEN _items ELSE [] END) | //cypher doesn't have IF
MERGE (i:ListItems {key: q,name:split(q,'=')[0],value: split(q,'=')[1]})
CREATE (hit)-[:WITH_QUERY]->(i)
)
现在这条线不应该发生
ON MATCH SET hit.updated = timestamp()
因为 hit_id 是唯一的,但我看到来自 Hit 类型的节点更新=xxx(我已经使用 grep [hit_id] 1.csv 使用文件验证了这些节点的 id 出现一次)
我很确定这条线有问题:
split(line.list_ites, ',') AS items UNWIND items AS _items
或使用循环
帮助我们appritiated,
里奥
更新:
我删除了这一行:
split(line.list_ites, ',') AS items UNWIND items AS _items
还有foreach循环,实际上我没有看到任何具有价值的“更新”字段。我仍然必须修复它,因为我不能真正从最终代码中删除它