根据节点的 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