sql - 将 Cypher 结果与 APOC SQL 查询相结合
问题描述
我正在尝试更新在虚拟环境中运行的 PostgreSQL 数据库的节点属性。我正在构建一个 Jazz 知识库,并希望使用节点 ID 从使用 APOC 的 PSQL 数据库中查询其他属性。
我尝试展开 id 并使用它们通过 APOC 运行 SQL 语句。
这是我迄今为止尝试过的代码:
MATCH (a:Artist)
WHERE a.genre = 'jazz'
WITH COLLECT(a.mbid) AS ids
UNWIND ids AS id
CALL apoc.load.jdbc('myDB',
"select DISTINCT a.gid, ar.name as country FROM artist a INNER JOIN area ar on a.area = ar.id WHERE a.gid = ?", [id]) YIELD row
MATCH (a:Artist) WHERE a.mbid = row.gid SET a.country = row.country
RETURN COUNT(a.country)
我遇到了一个错误,说“错误:运算符不存在:uuid = 字符变化”。无论如何,是否可以使用 Cypher 查询中的 id 通过带有 APOC 的单个 SQL 语句单独更新每个节点?
解决方案
假设该gid
列是 Postgres 数据库中的 UUID 类型,并且错误是在通过 执行查询时apoc.load.jdbc
,SQL 中的以下 ID 显式转换应该至少具有比较工作并且让查询返回一个可以比较的字符串值在:
MATCH (a:Artist)
WHERE a.genre = 'jazz'
WITH COLLECT(a.mbid) AS ids
UNWIND ids AS id
CALL apoc.load.jdbc('myDB',
"select DISTINCT a.gid::text, ar.name as country FROM artist a INNER JOIN area ar on a.area = ar.id WHERE a.gid = UUID(?)", [id]) YIELD row
MATCH (a:Artist) WHERE a.mbid = row.gid SET a.country = row.country
RETURN COUNT(a.country)
推荐阅读
- snowflake-cloud-data-platform - 雪花 nodejs 驱动程序 CURRENT_TIMESTAMP
- web-services - 在 Golang 中创建和提供文件而不将其保存到磁盘
- css - 如何使用 JS 和 CSS 获得不规则 SVG 笔触的手写动画?
- css - 如何使用 CSS 使图像变暗和模糊?
- java - JVM 无法验证 SSL 证书
- java - 如何将参数传递给使用 @RequiredArgsConstructor 的类的构造函数?
- javascript - 错误:无法在默认路径中找到 .env 文件
- flutter - Flutter中如何使按钮不被键盘隐藏[已解决]
- linux - jq提取json的数据
- javascript - 无法获取选择组目标 ID 以动态设置值