-1

我想导入一个excel文件,它实际上是一个关系矩阵nxn,在n个元素之间有几种关系类型。

id| name     | element1 | element2 | element3 ... n
1 | element1              1;2;3        1;5
2 | element2   1;2;3
3 | element3     1;5
...

我将 excel 保存为 CSV,这会创建很多空单元格(空单元格)。

在 Neo4j 中,我尝试过:

load csv with headers from 'file:///test.csv' as line
WITH line where not line.ID is null
merge (c:element{id: toInteger(line.id),name: line.name})

因此,我没有收到任何更改和记录。

4

2 回答 2

0

Neo4j Cypher 中的属性名称区分大小写。

您的文件有列id,但您正在检查where not line.ID is null. 这将跳过所有行,因为 CSV 文件中没有ID列。

在下面查找查询的修改版本以提高可读性:

LOAD CSV WITH HEADERS FROM 'file:///test.csv' AS line
WITH line 
WHERE line.id IS NOT NULL
MERGE (c:element{id: toInteger(line.id),name: line.name})
于 2019-05-29T16:52:00.917 回答
0

除了@Raj 的回答(属性名称区分大小写)之外,您的 CSV 文件需要在所有值之间使用相同的分隔符。

您的 CSV 文件(如您的问题所示)使用了不一致的分隔符。它有时使用空格,有时使用空格和竖线 ( |)。这不起作用,因为LOAD CSV子句仅支持一种分隔符。此外,如果您没有使用默认分隔符逗号,那么您需要使用该FIELDTERMINATOR选项来指定该分隔符是什么。

这是使用默认分隔符逗号的 CSV 文件的固定版本。请注意,两个相邻的逗号用于表示缺失值。如果一行缺少它的第一个值,那么第一个逗号应该在该行的开头。此外,请注意没有多余的空格。

id,name,element1,element2,element3
1,element1,,1;2;3,1;5
2,element2,1;2;3
3,element3,1;5
于 2019-05-29T19:15:31.983 回答