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

如何从Neo4j Browser已构建图谱生成Cypher CREATE语句

本地Neo4j图谱导出可重建CREATE语句方案

你可以直接用下面两种可落地的方法提取全量Cypher语句,导出的内容可以直接在Neo4j Console中运行复现完整图谱,无需额外依赖:


方法1:通过APOC插件直接导出(优先推荐,兼容性最好)

绝大多数本地安装的Neo4j Desktop版本默认预装APOC插件,不需要额外配置,直接在Neo4j Browser中执行导出语句即可:

  • 全量导出整个库的所有节点、关系、属性:
CALL apoc.export.cypher.all(
  {
    format: 'cypher-shell',
    cypherFormat: 'create',
    stream: true,
    separateFiles: false,
    includeIndex: false,
    includeConstraints: false
  }
) YIELD cypherStatements
RETURN cypherStatements;

执行后直接复制返回结果中cypherStatements字段的全部内容即可,导出的语句自动过滤了Neo4j内部ID等本地环境依赖,不会出现重建失败的问题。

  • 如果只需要导出部分子图,可以替换为按查询导出的语句,自定义匹配规则:
// 示例:仅导出Person、Movie标签关联的子图
CALL apoc.export.cypher.query(
  "MATCH (n:Person|Movie)-[r*0..]->(m) RETURN n,r,m",
  null,
  {
    format: 'cypher-shell',
    cypherFormat: 'create',
    stream: true,
    includeIndex: false
  }
) YIELD cypherStatements
RETURN cypherStatements;

方法2:通过py2neo脚本直接生成Cypher(无需安装插件)

如果你不想操作Neo4j插件,直接复用你现有py2neo连接逻辑,跑下面的脚本就能生成完整CREATE语句:

from py2neo import Graph

# 替换为你本地Neo4j的连接信息
local_graph = Graph("bolt://localhost:7687", auth=("neo4j", "你的本地库密码"))
cypher_collect = []

# 遍历写入所有节点,增加临时ID用于后续关系匹配
for node in local_graph.nodes.match():
    label_str = ":".join(node.labels)
    prop_str = "{" + ", ".join([f"`{k}`: {repr(v)}" for k, v in node.items()]) + "}"
    cypher_collect.append(f"CREATE (n:{label_str} {prop_str}) SET n.__tmp_id = '{node.identity}';")

# 遍历写入所有关系
for rel in local_graph.relationships.match():
    rel_type = type(rel).__name__
    prop_str = "{" + ", ".join([f"`{k}`: {repr(v)}" for k, v in rel.items()]) + "}"
    cypher_collect.append(
        f"MATCH (s), (e) WHERE s.__tmp_id = '{rel.start_node.identity}' AND e.__tmp_id = '{rel.end_node.identity}' "
        f"CREATE (s)-[r:{rel_type} {prop_str}]->(e);"
    )

# 清理临时ID字段
cypher_collect.append("MATCH (n) REMOVE n.__tmp_id;")

# 输出完整Cypher内容,可直接复制或写入文件
full_cypher = "\n".join(cypher_collect)
with open("graph_rebuild.cypher", "w", encoding="utf-8") as f:
    f.write(full_cypher)

导入到Neo4j Console的注意事项

  • 粘贴导出的Cypher语句前,先在Console中执行MATCH (n) DETACH DELETE n;清空默认示例数据,避免和你的图谱内容冲突。
  • 语句执行完成后即可直接生成分享链接,接收方打开链接就能直接浏览、查询图谱,不需要安装任何Neo4j相关组件。
  • 如果你的图谱属性包含时间、空间等特殊类型,优先选择APOC导出方式,脚本会自动做类型适配,不会出现属性丢失或类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 02:36:32