将JSON文件导入Neo4j遇语法错误,请求排查Cypher语句问题
问题分析与修正方案
你的Cypher语句确实存在语法问题,这正是触发报错的原因。核心问题在于**JSON中的@rid字段包含特殊字符@,在Cypher中直接引用这类带特殊符号的属性名时,必须用反引号()包裹**,否则解析器会把@`判定为无效输入。
另外还有个小优化点:你把YIELD的变量名设成了E2812HA0011EP,和节点标签完全一致,虽然语法上允许,但会降低代码可读性,建议改成更通用的变量名(比如item)。
修正后的完整Cypher语句
CALL apoc.load.json("file:///C:/Users/C63086/Downloads/neo4j-community-3.4.0/naveen.export.json") YIELD value AS item MERGE (u:E2812HA0011EP {rid: item.`@rid`}) SET u.actualR = item.actualR, u.sumPartno = item.sumPartno, u.comments = item.comments, u.Partno = item.Partno, u.title = item.title, u.priority = item.priority, u.expectedR = item.expectedR, u.configid = item.configid, u.subtitle = item.subtitle, u.Qty = item.Qty, u.model = item.model, u.family = item.family, u.sku = item.sku, u.bundle = item.bundle
关键修改说明
- 处理特殊属性名:将原语句中的
E2812HA0011EP.@rid改为item.@rid``,用反引号包裹@rid,让Cypher正确识别这个带特殊字符的属性; - 优化变量命名:把YIELD的变量从
E2812HA0011EP改为item,避免与节点标签重名,让代码逻辑更清晰易懂。
修改后,你的导入语句应该就能正常执行,顺利将JSON数据导入Neo4j了。
内容的提问来源于stack exchange,提问作者Sai Naveen
相关产品推荐
相关产品推荐

