Neo4j批量迭代创建动态复杂关系时遇语法错误求助
问题解决:Neo4j批量创建动态类型关系的语法错误修复
错误原因分析
你的查询语法错误出在apoc.periodic.iterate的第二个执行片段中:
- 多余的
WITH n, c,语句导致后续CALL语法不合法,第一个查询已经返回了n和c变量,第二个片段可直接使用,无需额外WITH传递 - 配置参数
BatchSize首字母应为小写(batchSize),符合APOC配置参数的命名规范
修正后的查询
CALL apoc.periodic.iterate( "MATCH (n:Genes),(c:n4sch__Class) WHERE n.`GO ID` = c.n4sch__name RETURN n,c", "CALL apoc.create.relationship(n, n.Qualifier, {}, c) YIELD rel RETURN rel", {batchMode: "BATCH_SINGLE", batchSize: 100} ) YIELD batches, total RETURN batches, total;
额外提示
- 如果
Genes节点的Qualifier属性可能为空,建议添加判断避免创建空类型的关系,可修改第一个查询片段为:"MATCH (n:Genes),(c:n4sch__Class) WHERE n.`GO ID` = c.n4sch__name AND n.Qualifier IS NOT NULL RETURN n,c" - 批量处理时可根据数据量调整
batchSize,平衡性能和内存占用
内容的提问来源于stack exchange,提问作者Yoyo458 A
相关产品推荐
相关产品推荐

