You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用apoc.load.json导入JSON数据时遇语法错误求助

解决Apoc.load.json导入时的Variable value未定义错误

嘿,我来帮你搞定这个问题!你遇到的Neo.ClientError.Statement.SyntaxError: Variable 'value' not defined错误,本质是因为你的Cypher语句结构出了问题——value变量是由CALL apoc.load.json(...) YIELD value返回的,但后续的UNWIND子句没有和它处于同一个语句上下文里,导致Neo4j找不到这个变量。

修正后的完整Cypher语句

结合你要建立的University --child--> Class --child--> Student关系,正确的导入语句应该是这样的:

CALL apoc.load.json("FILE:///C:/tmp/input.json") YIELD value
UNWIND value.university AS university
// 创建大学节点
MERGE (u:University {id: university.id, name: university.name})
UNWIND university.class AS class
// 创建班级节点并关联到对应的大学
MERGE (c:Class {id: class.id, name: class.name})
MERGE (u)-[:child]->(c)
UNWIND class.student AS student
// 创建学生节点并关联到对应的班级
MERGE (s:Student {id: student.id, name: student.name})
MERGE (c)-[:child]->(s)

关键注意事项

  • 语句上下文要连续:所有依赖value的子句(比如后面的三个UNWIND)必须紧跟在YIELD value之后,属于同一条完整的Cypher语句,不能拆分成多个单独执行的片段。之前的错误大概率是因为你把语句拆分执行,导致value变量在后续步骤中丢失了。
  • JSON结构要匹配:你的input.json需要和语句中的路径对应,比如结构应该类似:
{
  "university": [
    {
      "id": "u001",
      "name": "北京大学",
      "class": [
        {
          "id": "c001",
          "name": "计算机科学实验班",
          "student": [
            {
              "id": "s001",
              "name": "小明"
            },
            {
              "id": "s002",
              "name": "小红"
            }
          ]
        }
      ]
    }
  ]
}

如果JSON里的字段名和语句里的不一致(比如把university写成了universities),也会导致后续步骤出错,记得核对字段名。

内容的提问来源于stack exchange,提问作者Shawn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:42:10