csv导入期间neo4j cypher存储数组属性

时间:2017-07-03 17:42:04

标签: arrays csv neo4j cypher

我需要从

形式的csv导入数据
id;name;targetset
1;"somenode",[1,3,5,8]
2,"someothernode",[3,8]

进入图表,我需要使用cypher将targetset存储为集合(数组)。我试过了

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/mytable.csv" AS row FIELDTERMINATOR ';'
CREATE (:MyNode {id: row.id, name: row.name, targetset: row.targetset});

但它将targetset存储为字符串,例如"[1,3,5,8]"。似乎没有将数组编码字符串转换为实际数组的函数,例如将toInt转换为整数。还有其他可能吗?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/mytable.csv" AS row FIELDTERMINATOR ';'
CREATE (:MyNode {id: row.id, name: row.name, targetset: split(substring(row.targetset, 1, length(row.targetset) - 2), ',') });

上述代码使用substring()length()函数从字符串[中删除][1,3,5,8]个字符。在将1,3,5,8作为分隔符进行分割后,将,字符串拆分。

答案 1 :(得分:2)

APOC Procedures将是您最好的选择。使用函数apoc.convert.fromJsonList()

使用示例:

WITH "[1,3,5,8]" as arr
RETURN apoc.convert.fromJsonList(arr)