我有一个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列中的某些值为空。
我收到错误:'包含空值的集合无法存储在属性中。'
我该如何解决这个问题?
答案 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
子句将L1
,L2
和L3
放在不同的数据行中;并且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});