【问题标题】:Cannot merge the following node because of null property value for 'name':由于“名称”的属性值为空,无法合并以下节点:
【发布时间】:2021-09-10 10:13:03
【问题描述】:

我的代码:

LOAD CSV WITH HEADERS FROM "file:///C:/test1.csv" AS line
MERGE (n:SiteA {name: line.SiteA})
MERGE (m:SiteB {name: line.SiteB})
MERGE (n) -[:has_device_function]-> (m);

我的错误:

由于 'name' 的属性值为空,无法合并以下节点:(:SiteA {name: null})

你能帮帮我吗?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    试试这个

    从“file:///C:/test1.csv”作为行匹配加载带有标题的 CSV (n:SiteA {name: line.SiteA}) 其中 n.name 不为空 MATCH (m:SiteB {name: line.SiteB}) 其中 m.name 不为空 MERGE (n) -[:has_device_function]-> (m);

    需要注意两件事:过滤掉空值并使用 MATCH 而不是在初始提取新关系的节点时合并。

    【讨论】:

      【解决方案2】:

      为了轻松避免此类问题,我通常为我的 CSV 传递一个空项目的默认值(通常是 DELETE_ME_PLEASE)。那我就用这个来匹配和删除节点。

      【讨论】:

        【解决方案3】:

        首先,请确定:这意味着您的 CSV 中存在名称列为空的行。

        也就是说,您可以在继续查询之前从 CSV 中删除行:

        LOAD CSV WITH HEADERS FROM "file:///C:/test1.csv" AS line
        WITH line WHERE line.name IS NOT NULL
        MERGE (n:SiteA {name: line.SiteA})
        MERGE (m:SiteB {name: line.SiteB})
        MERGE (n) -[:has_device_function]-> (m);
        

        【讨论】:

          【解决方案4】:

          Csv 只需要昏迷就可以了……

          【讨论】:

          • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
          猜你喜欢
          • 2021-06-14
          • 1970-01-01
          • 1970-01-01
          • 2021-04-19
          • 2016-09-02
          • 1970-01-01
          • 2013-03-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多