【问题标题】:How to import CSV containing boolean values into Neo4j如何将包含布尔值的 CSV 导入 Neo4j
【发布时间】:2015-05-19 16:29:22
【问题描述】:

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

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

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

这是数据:

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

还有密码声明:

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

提前非常感谢, 奥利弗

【问题讨论】:

    标签: csv import neo4j boolean


    【解决方案1】:

    您可以使用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)})
    

    【讨论】:

    • 不幸的是,我已经尝试过这种方法。仅当我将其更改为:LOAD CSV WITH HEADERS FROM 'file:///&lt;path&gt;' AS row CREATE (:Category {UUID: row.UUID, Name: row.Name, IsSelectable: (case toInt(row.IsSelectable) when 1 then true else false end)}) 然后它只插入 IsSelectable 为 1 的行。跳过 0 的行。
    • 我的错误,您建议的解决方案有效。非常感谢!
    【解决方案2】:
    (case row.IsSelectable when 1 then true else false end)
    

    所有值的结果都是假的。应该是:

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

    因为 LOAD CSV 只读取字符串。

    【讨论】:

    • 非常感谢@Lee46,我遇到了字符串问题,它适用于 3.4.4。 toBollean() 不适用于 3.4.4 顺便说一句
    【解决方案3】:

    您可以使用toBoolean 将 1/0 转换为真/假

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      相关资源
      最近更新 更多