neo4j - 获取 Neo.ClientError.Statement.SemanticError:无法使用空属性合并节点
问题描述
您好我正在尝试在我的 csv 文件中的两列之间建立关系我正在加载具有关系列的 csv 文件,它看起来像这样
RELATIONSHIP,AGENTID,CUSTOMERID,TXNID,TIMESTAMP,AMOUNT,CHANNEL
hasrelation,17956,2025,6C13MXSESN,2019-03-01T11:52:08,10,USSD
hasrelation,17957,2026,6C13MXSEVF,2019-03-01T11:52:09,50,BAPP
所以我想在 AGENTID 和 CUSTOMERID 之间建立关系。关系代码是
load csv with headers from "file:///test.csv" AS row
MERGE (p1:AGENTID {name: row.AGENTID})
MERGE (p2:CUSTOMERID {name: row.CUSTOMERID})
WITH p1, p2, row
CALL apoc.create.relationship(p1, row.relationship, {}, p2) YIELD rel
RETURN rel;
这是出于测试目的,但我收到以下错误 Neo.ClientError.Statement.SemanticError: Cannot merge node using null property value for name
而且最近我也试过这个
LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
MATCH (f:AGENTID), (s:CUSTOMERID)
WHERE f.Name = row.AGENTID
AND s.Name = row.CUSTOMERID
CALL apoc.create.relationship(f, row.RELATIONSHIP,{}, s) YIELD rel
RETURN rel
我在这里没有收到错误,但我没有得到关系结果
实际上我有一种感觉,我错过了一些非常愚蠢的观点。请帮助我理解为什么我会收到这个错误。并帮助我解决这个问题。谢谢
解决方案
您正在获取第一个查询,因为您的文件中或某处SemanticError
没有值(null),因此就像您正在尝试对一个值进行节点处理。您需要在之前检查空值并跳过这些。见下文。CUSTOMERID
AGENTID
MERGE
null
MERGE
MERGE
不建议MERGE
在单个查询中使用多个。一个查询中只MERGE
推荐一个。
建议您将查询分成两部分,并使用第二部分来创建关系。
加载 AGENTID:
LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
WHERE row.AGENTID IS NOT NULL
MERGE (p1:AGENTID {name: row.AGENTID});
加载 CUSTOMERID:
LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
WHERE row.CUSTOMERID IS NOT NULL
MERGE (p2:CUSTOMERID {name: row.CUSTOMERID})
在 AGENTID 和 CUSTOMERID 之间创建关系:
LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
MATCH (f:AGENTID), (s:CUSTOMERID)
WHERE f.name = row.AGENTID
AND s.name = row.CUSTOMERID
CALL apoc.create.relationship(f, row.RELATIONSHIP,{}, s) YIELD rel
RETURN rel
推荐阅读
- android - 撰写:从另一个 TextStyle 继承 TextStyle
- java - 如何在 Java 中使用自定义字符集将字节数组编码为 Base 63 字符串?
- docker - 从交互式 docker 容器在主机上运行命令
- html - 当标签的 href 是一个 html 文件并添加了下载属性时,期望是什么?
- powershell - 使用 PowerShell Where-Object 不适用于 Get-ChildItem
- python - 无法将符号张量 ({}) 转换为 numpy 数组。”
- javascript - 如何根据状态值动态显示组件
- laravel - Laravel:无法使用自动加载功能
- android - 底部导航视图图标更改不起作用
- sql - 如何在 PostgreSQL 中将两个带有动态表名的 SQL 查询合并为一个