Neo4j:包含空值的集合无法存储在属性中

时间:2017-06-27 06:31:38

标签: neo4j cypher

我有一个csv,我想在一个属性中使用多个列。但并非所有列都同时填充。

LOAD CSV WITH HEADERS FROM "file:c:/Users/emp.csv" AS row
CREATE (:Employee {ID: row.EID, Name: row.ENAME, Language: [row.L1, row.L2 , 
row.L3]});

此处,L1或L2或L3列中的某些值为空。

我收到错误:'包含空值的集合无法存储在属性中。'

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这可能对您有用:

LOAD CSV WITH HEADERS FROM "file:c:/Users/emp.csv" AS row
UNWIND [row.L1, row.L2, row.L3] AS x
WITH row, COLLECT(x) AS langs
CREATE (:Employee {ID: row.EID, Name: row.ENAME, Language: langs});

UNWIND子句将L1L2L3放在不同的数据行中;并且COLLECT聚合函数再次将它们收集在一起,但忽略任何NULL值。

答案 1 :(得分:0)

你可以尝试使用distinct来过滤掉空值

LOAD CSV WITH HEADERS FROM "file:c:/Users/emp.csv" AS row
WITH *, distinct(row.L1 + row.L2 + row.L3) as langs 
CREATE (:Employee {ID: row.EID, Name: row.ENAME, Language: langs});