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