我有一个包含数组的CSV文件。该文件如下所示:
siblings
[3010,3011,3012]
[2010,2012]
我要做的是将数组的元素作为单独的行返回。
我查看了文档并找到了UNWIND
函数。当我尝试文档中显示的示例时:
UNWIND [1, 2, 3] AS x
RETURN x
一切顺利。当我用我的数据尝试它时,查询看起来像这样:
LOAD CSV WITH HEADERS FROM
'file:///test.csv' AS line1
UNWIND line1.siblings as a
RETURN a
,结果是
[3010,3011,3012]
[2010,2012]
而不是:
3010
3011
3012
...
有谁知道我做错了什么?
答案 0 :(得分:2)
CSV列全部作为字符串处理,因此您需要将它们视为字符串。在您的情况下,您可以在将字符串拆分为集合之前从 siblings 列中删除括号。该步骤将帮助您避免预处理文件。一旦你拆分了字符串,你仍然有一个字符串集合。
WITH "[1001,1002,1003]" as numbers_with_brackets_in_a_string
WITH substring( numbers_with_brackets_in_a_string, 1, size(numbers_with_brackets_in_a_string)-2 ) as numbers_in_a_string
UNWIND split( numbers_in_a_string, ',' ) as number_as_a_string
RETURN number_as_a_string
答案 1 :(得分:0)
我找到了一种解决这个问题的丑陋方法。
我做了以下事情:
LOAD CSV WITH HEADERS FROM
'file:///test.csv' AS line1
WITH line1, split(line1.siblings, ",") as s
UNWIND s as sib
RETURN sib
之后我得到了以下内容:
[3010
3011
3012]
...
我从CSV文件中删除了[]
,我得到了我想要的输出。
我知道这是一个丑陋的解决方案,如果有人能找到更好的解决方案,我将不胜感激。