Properties Neo4j Cypher-使用LOAD CSV添加属性

Properties Neo4j Cypher-使用LOAD CSV添加属性,properties,neo4j,cypher,load-csv,Properties,Neo4j,Cypher,Load Csv,我使用文件_a创建了一组节点,其中包含一列,每个节点的“id”。它是使用此密码查询(Java)创建的: 现在我有了另一个文件(file_B),它包含四列:id、description、prop2和prop3。我需要为之前创建的每个节点分配一个描述(属性“nodeDesc”)。这些说明将从文件_B的“说明”列中读取。此外,要将此值分配给节点的“NodesC”属性,“prop2”和“prop3”都必须等于“1”。为此,我使用以下密码查询: USING PERIODIC COMMIT 1000 LOA

我使用文件_a创建了一组节点,其中包含一列,每个节点的“id”。它是使用此密码查询(Java)创建的:

现在我有了另一个文件(file_B),它包含四列:id、description、prop2和prop3。我需要为之前创建的每个节点分配一个描述(属性“nodeDesc”)。这些说明将从文件_B的“说明”列中读取。此外,要将此值分配给节点的“NodesC”属性,“prop2”和“prop3”都必须等于“1”。为此,我使用以下密码查询:

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
文件_B包含每个节点的一些描述,但其中只有一个节点的“prop2”和“prop3”都等于“1”。这就是我想要分配给节点属性的那个

我在执行上一个查询后遇到的问题是,一些节点没有描述。在执行了几个测试之后,我验证了它没有将“nodeId”与file_B的列“id”匹配,但是在该列中它是“nodeId”,并且“prop2”和“prop3”都等于1

注意:文件A大约有400.000行,文件B大约有1.300.000行


谢谢。

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


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

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


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

您好,谢谢您的回答。值都是字符串。并且没有尾随空格或前置空格。事实上,如果我手动删除文件_B的所有行(不匹配的一行除外),那么如果我执行反密码查询(第二行),它将匹配。如果我剪切其中一个不匹配的行并粘贴到文件_B上的行的第一个位置,它也会匹配。奇怪的行为……您好,谢谢您的回答。值都是字符串。并且没有尾随空格或前置空格。事实上,如果我手动删除文件_B的所有行(不匹配的一行除外),那么如果我执行反密码查询(第二行),它将匹配。如果我剪切其中一个不匹配的行并粘贴到文件_B上的行的第一个位置,它也会匹配。奇怪的行为。。。
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