1

我有一组使用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 行。

谢谢。

4

1 回答 1

0

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

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

于 2017-02-08T13:08:58.810 回答