根据节点的 id 从 CSV 将节点加载到 Neo4j 中?
Load nodes into Neo4j from CSV according to their id?
我有以下 CSV:
id attr value
1 abc 1.1
1 eww -9.4
1 ssv likj
2 we2 1
2 eww 900
3 kuku -91
3 lulu 383
3 ssv bubu
我想创建 3 个节点,包括:
Node 1: {id:1, abc: 1.1, eww: -9.4, ssv: "likj"}
Node 2: {id:2, we2: 1, eww: 900}
Node 3: {id:3, kuku: -91, lulu: 383, ssv: "bubu"}
如何在 Neo4j 密码中构建它?
我假设您已经找到 documentation about LOAD CSV ,所以我将跳过它。我假设节点将有一个 MyThing
标签,并且 id
是一个 属性,所以不是内部 Neo4j id。
在进行导入之前,创建一个约束:
CREATE CONSTRAINT ON (n:MyLabel) ASSERT n.id IS UNIQUE
您可能还需要安装 apoc 插件,因为它有很多非常适合这种情况的功能。
然后,像这样:
LOAD CSV .. AS line
WITH line.id AS id,
COLLECT([line.attr,line.value]) AS keyValuePairs
WITH id,
apoc.map.fromPairs(keyValuePairs) AS map
MERGE (n:MyLabel {id:id})
SET n += map
我有以下 CSV:
id attr value
1 abc 1.1
1 eww -9.4
1 ssv likj
2 we2 1
2 eww 900
3 kuku -91
3 lulu 383
3 ssv bubu
我想创建 3 个节点,包括:
Node 1: {id:1, abc: 1.1, eww: -9.4, ssv: "likj"}
Node 2: {id:2, we2: 1, eww: 900}
Node 3: {id:3, kuku: -91, lulu: 383, ssv: "bubu"}
如何在 Neo4j 密码中构建它?
我假设您已经找到 documentation about LOAD CSV ,所以我将跳过它。我假设节点将有一个 MyThing
标签,并且 id
是一个 属性,所以不是内部 Neo4j id。
在进行导入之前,创建一个约束:
CREATE CONSTRAINT ON (n:MyLabel) ASSERT n.id IS UNIQUE
您可能还需要安装 apoc 插件,因为它有很多非常适合这种情况的功能。
然后,像这样:
LOAD CSV .. AS line
WITH line.id AS id,
COLLECT([line.attr,line.value]) AS keyValuePairs
WITH id,
apoc.map.fromPairs(keyValuePairs) AS map
MERGE (n:MyLabel {id:id})
SET n += map