【发布时间】:2017-02-08 12:54:12
【问题描述】:
我有一组使用 file_A 创建的节点,其中包含一个带有每个节点“id”的列。它是使用这个 Cypher 查询(在 Java 中)创建的:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:file_A' AS line FIELDTERMINATOR '\t'
CREATE (c:Node {nodeId:line.id})
现在我有了另一个文件 (file_B),其中包含四列:id、description、prop2 和 prop3。我需要为之前创建的每个节点分配一个描述(属性“nodeDesc”)。这些描述将从 file_B 的“描述”列中读取。此外,要将此值分配给节点的“nodoDesc”属性,“prop2”和“prop3”都必须等于“1”。为此,我使用了这个 Cypher 查询:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:file_B' AS line FIELDTERMINATOR '\t'
MATCH (c:Node)
WHERE c.nodeId=line.id AND line.prop2='1' AND line.prop3='1'
SET c.nodeDesc = line.description
file_B 包含每个节点的一些描述,但只有一个节点的“prop2”和“prop3”都等于“1”。这就是我要分配给节点属性的那个。
执行上一个查询后我得到的问题是某些节点没有描述。在执行了几次测试后,我已经验证它不会与 file_B 的列“id”匹配“nodeId”,但在该列中它是“nodeId”,并且两者'prop2' 和 'prop3' 等于 1'。
注意:file_A 大约有 400.000 行,file_B 大约有 1.300.000 行。
谢谢。
【问题讨论】:
标签: properties neo4j cypher load-csv