SQL 一键转经典 Chen 风格 ER 图:开源 CLI + 在线工具 + Agent Skill

SQL 一键转经典 Chen 风格 ER 图:开源 CLI + 在线工具 + Agent Skill

做数据库设计、写课程作业、给需求出表结构时,经常要画 ER 图。很多人还在用 Visio / ProcessOn 一点点拖,或者把 SQL 丢进各种「半成品」工具里,版式乱、中文糊、还导不出设计文档。

我把平时在用的能力整理成了一套开源方案:sql-to-er ------从 CREATE TABLE 直接生成经典 Chen 风格 ER 图,并支持 Word 三线表设计文档。


能做什么

能力 说明
多方言 SQL MySQL / PostgreSQL / SQL Server / Oracle 常见 DDL
经典 Chen 图 实体矩形、属性椭圆、关系菱形,标注 1 / N
渲染策略 有 Graphviz 用 Graphviz;没有则自动 matplotlib 黑白回退
文档导出 Word 三线表「数据库设计文档」
其它格式 Mermaid、GoJS JSON(按需)
Agent Skill 可挂到 AI Agent,给 SQL 或自然语言需求直接出图

解析优先走 yanleaf 公开接口,失败会本地回退,不强制联网才能画图。


快速开始

环境:Python 3.9+

bash 复制代码
pip install sqlparse pyyaml python-docx pillow matplotlib graphviz

(国内可将 pip 源换成清华等镜像。)

bash 复制代码
# 只要 ER 图
python scripts/sql_to_erd.py your.sql --out erd --format png

# 只要 Word 设计文档
python scripts/sql_to_erd.py your.sql --out design --format word

# 图 + 文档 + Mermaid 全套
python scripts/sql_to_erd.py your.sql --out erd --format all

系统 Graphviz(可选,装了图更稳):

  • Windows:官网安装包或 winget install Graphviz.Graphviz
  • macOS:brew install graphviz
  • Ubuntu:sudo apt install graphviz

装不上也没关系,会自动走 matplotlib。


SkillHub 一键安装

若使用支持 SkillHub 的 AI 助手,可发送:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_0695bb88/sql-to-er。

安装完成后,提供 SQL 或业务描述,即可生成经典 Chen 风格 ER 图。

和「只支持一种库 / 只能看图」的工具差在哪

  1. Chen 记号:不是只有方框表结构,而是教学和论文里常见的实体---属性---关系画法。
  2. 能出 Word 三线表:交作业、写设计说明更直接。
  3. 可脚本化 / 可进 Agent:适合批量 SQL、CI 或和 AI 工作流集成。
  4. 在线版补齐交互:需要拖拽、AI 辅助建模时,用 https://yanleaf.com/tools/sql-to-er 即可。

作为 Agent Skill

仓库内带有 SKILL.md,拷到 Agent 的 skills 目录后:

  • 用户丢一段 SQL → 解析并出 ER 图
  • 用户说「做一个学生选课的 ER 图」→ 由当前模型设计表结构再渲染(不消耗在线站的 AI 额度)

约定是:用户要什么就出什么(只说「画图」就只出 PNG,不要默认全套导出)。


说明与规划

  • 当前聚焦 CREATE TABLE 与主外键关系,不做完整 DDL 仿真器。
  • 表很多、字段很多时,可只保留主键/外键等关键字段,避免图不可读。
  • 后续会按反馈继续打磨布局与方言细节。

欢迎 Star、提 Issue,或直接在线试用:

相关推荐
miofly4 小时前
Aleph Alpha 开源 78B 参数 MoE 模型 Kolibri
开源·github
PaperData4 小时前
1985-2025年全国区县专利申请与授权面板数据
数据库
snpgroupcn4 小时前
大数据量SAP迁移方案:系统越大,越不能硬搬
数据库·sap
言乐64 小时前
HTML视频审核模型
python·django·virtualenv·pygame·tornado
Flynt5 小时前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式
笃行3505 小时前
KingbaseES 数据加密全解:从 SSL 到全密态
数据库
言乐65 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
Ivanqhz5 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
Seraphina366 小时前
SQLI-labs(一)黑盒全流程
sql·安全·web安全
yl45306 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python