Neo4j Cypher-使用LOAD CSV添加属性



我有一组使用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"one_answers"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"one_answers"prop3"都等于"1"。这就是我想要分配给节点属性的那个。

在执行上一个查询后,我遇到的问题是有些节点没有描述。在执行了几次测试后,我已经验证了它没有将"nodeId"与file_B的列"id"进行MATCH,但在该列中它是"nodeId’,并且"prop2"one_answers"prop3"都等于1'。

注意:file_A大约有4000000行。,file_B大约有1.30.000行。

谢谢。

您可能需要确保没有将整数与字符串进行比较。这往往是这种不匹配的根源。

如果两个值都是字符串,那么您可能需要检查其中一个字符串是否有尾部(或前面)空格。

最新更新