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

从CSV加载数据至Neo4J出现CypherSyntaxError报错如何解决

问题解决方案

错误原因

报错核心有两点:

  1. 你将LOAD CSV和后续节点、关系创建操作拆成了4次独立的tx.run调用,LOAD CSV生成的line变量仅在当前查询的上下文有效,后续三个查询完全无法识别该变量;同时单独执行LOAD CSV没有后续更新/RETURN子句,直接触发Neo4j语法校验报错。
  2. 你的CSV表头为predecessor和successor,但代码中错误引用了不存在的line.source、line.destination字段,即便解决语法问题也无法读取到正确值。

修正后的完整代码

from neo4j import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "187179"))

def add_data(tx):
    # 所有Cypher逻辑合并到同一个查询中,保证line变量上下文有效
    tx.run("""
    LOAD CSV WITH HEADERS FROM 'file:///data.csv' AS line
    MERGE (s:Table {id: line.predecessor})
    MERGE (d:Table {id: line.successor})
    MERGE (s)-[:FEEDS_INTO]->(d)
    """)

with driver.session() as session:
    session.write_transaction(add_data)
driver.close()

主要修改点

  • 合并Cypher语句到同一个查询,解决LOAD CSV的语法问题和line变量作用域问题
  • 修正字段引用为CSV实际表头predecessor、successor
  • 统一节点标签为Table,避免同一个表作为上游/下游时生成重复的不同标签节点
  • 使用MERGE创建关系,避免多次运行代码重复生成相同关系

注意事项

请确保data.csv文件已经放置在Neo4j安装目录下的import文件夹中,否则会触发文件找不到的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:57:04