neo4j在特定属性上使用合并加载CSV

neo4j在特定属性上使用合并加载CSV,neo4j,Neo4j,我试图输入两个具有相同结构但属性值不同的CSV。我试图让它只创建属性“name”不匹配的新节点。我认为它所做的是,因为完整的列(我没有使用,它是唯一的)忽略了合并,只是创建了一个新节点。我的代码如下所示: LOAD CSV FROM 'https://s3.amazonaws.com.../inputSample.csv' AS line MERGE (e:Executable {system: line[0], location: line[1], name: line[2]}) MERGE

我试图输入两个具有相同结构但属性值不同的CSV。我试图让它只创建属性“name”不匹配的新节点。我认为它所做的是,因为完整的列(我没有使用,它是唯一的)忽略了合并,只是创建了一个新节点。我的代码如下所示:

LOAD CSV FROM 'https://s3.amazonaws.com.../inputSample.csv' AS line
MERGE (e:Executable {system: line[0], location: line[1], name: line[2]})
MERGE (d:Dataset {system: line[3], group: line[4], name: line[5]})
CREATE (d)-[:input]->(e)

LOAD CSV FROM 'https://s3.amazonaws.com/.../sampleOutput.csv' AS line
MERGE (e:Executable {system: line[0], location: line[1], name: line[2]})
MERGE (d:Dataset {system: line[3], group: line[4], name: line[5]})
CREATE (e)-[:output]->(d)
来自输入的采样线:

A   Projects/bmp    bmp loc B   ACCT
来自输出的采样线:

B   Projects/asp    asp loc B   ACCT

因此,我不希望在二次加载中创建第二个d:Dataset,因为该信息已经存在,这有意义吗?

您正在尝试合并具有3个不同值的节点。所以

(e:Executable {system: system1, location: location1, name: name1})

它们是不同的

您应该只指定一个要合并的属性,然后设置其他属性:

LOAD CSV FROM 'https://s3.amazonaws.com.../inputSample.csv' AS line
MERGE (e:Executable {name: line[2]})
ON CREATE SET e.system = line[0], e.location = line[1]
MERGE (d:Dataset {name: line[5]})
ON CREATE SET e.system = line[3], d.location = line[4]
CREATE (d)-[:input]->(e)

LOAD CSV FROM 'https://s3.amazonaws.com/.../sampleOutput.csv' AS line
MERGE (e:Executable {name: line[2]})
ON CREATE SET e.system = line[0], e.location = line[1]
MERGE (d:Dataset {name: line[5]})
ON CREATE SET e.system = line[3], d.location = line[4]
CREATE (d)-[:input]->(e)

在您的解决方案中,只有这是最后一行应该是CREATE(e)-[:output]->(d),除此之外,谢谢!是的,复制粘贴问题,怪我
LOAD CSV FROM 'https://s3.amazonaws.com.../inputSample.csv' AS line
MERGE (e:Executable {name: line[2]})
ON CREATE SET e.system = line[0], e.location = line[1]
MERGE (d:Dataset {name: line[5]})
ON CREATE SET e.system = line[3], d.location = line[4]
CREATE (d)-[:input]->(e)

LOAD CSV FROM 'https://s3.amazonaws.com/.../sampleOutput.csv' AS line
MERGE (e:Executable {name: line[2]})
ON CREATE SET e.system = line[0], e.location = line[1]
MERGE (d:Dataset {name: line[5]})
ON CREATE SET e.system = line[3], d.location = line[4]
CREATE (d)-[:input]->(e)