如何将包含布尔值的CSV导入Neo4j

时间:2015-03-17 09:43:56

标签: csv import neo4j boolean

我目前正在尝试使用Cypher将CSV数据导入Neo4j。

不幸的是,我找不到将某个列(true / false)从String转换为Boolean的方法。当使用例如Case-When构造时,布尔值用于决定是否应创建节点。

因此我的问题是:我做错了什么?

以下是数据:

"UUID", "Name", "IsSelectable"
"1", "Abc", 1
"2", "Def", 0

cypher声明:

LOAD CSV WITH HEADERS FROM 'file:///<path>' AS row
CREATE (:Category {UUID: row.UUID, Name: row.Name, IsSelectable: ???})

非常感谢, 奥利弗

3 个答案:

答案 0 :(得分:10)

您可以使用CASE WHEN THEN ELSE END表达式。

请参阅密码参考卡:http://neo4j.com/docs/stable/cypher-refcard

LOAD CSV WITH HEADERS FROM 'file:///<path>' AS row
CREATE (:Category {UUID: row.UUID, Name: row.Name, 
       IsSelectable: (case row.IsSelectable when 1 then true else false end)})

答案 1 :(得分:1)

(case row.IsSelectable when 1 then true else false end)

所有值的结果为false。应该是:

(case row.IsSelectable when '1' then true else false end)

因为LOAD CSV只读取字符串。

答案 2 :(得分:1)

您可以使用toBoolean将1/0转换为true / false

LOAD CSV WITH HEADERS FROM 'file:///<path>' AS row
CREATE (:Category {
    UUID: row.UUID, 
    Name: row.Name, 
    IsSelectable: toBoolean(row.IsSelectable)
})