告别手写DDL:用ChartDB智能查询一条命令完成数据库可视化设计与跨库迁移
告别手写DDL用ChartDB智能查询一条命令完成数据库可视化设计与跨库迁移【免费下载链接】chartdbDatabase diagrams editor that allows you to visualize and design your DB with a single query.项目地址: https://gitcode.com/GitHub_Trending/ch/chartdbChartDB 是一款开源的数据库图表编辑器核心卖点是一条智能查询在数据库里跑一段 SQL就能把整套表结构自动变成可视化 ER 图并支持 DBML 导入导出、多数据库方言识别和 AI 驱动的跨库脚本生成。如果你受够了靠想象理解别人留下的数据库、或者每次迁移都要逐条改写建表语句这篇文章带你从零走完查结构 → 看图 → 改设计 → 跨库导出的完整流程。一个熟悉到想哭的场景接手一个没有文档的数据库新项目开工你拿到一个跑了两年的生产库。没有 ER 图没有设计文档唯一的说明书是几十张建表 SQL 和同事口头留下的只言片语。你只能打开客户端SHOW TABLES、DESCRIBE、查外键……拼拼凑凑在脑子里还原业务全貌然后在白板上画一张谁也不敢保证正确的草图。更痛苦的是后面的改动要加一张表、改一个字段类型得手写 DDL、反复测试要换数据库比如从 MySQL 迁到 PostgreSQL那基本等于把 DDL 全部重写一遍AUTO_INCREMENT要改SERIAL反引号要改双引号类型映射错了还得靠报错一点点排查。这个场景里真正缺的不是 SQL 能力而是一条把数据库结构翻译成人能看懂的形式的捷径。ChartDB 做的就是这件事。ChartDB 是什么一个不需要密码的网页版数据库设计器ChartDB 是一个纯前端的开源项目当前版本 1.20.1不需要安装客户端也不需要你提供数据库密码。它通过三种方式把结构搬进画布智能查询Smart Query在库里执行它生成的只读查询拿到 JSON 结果贴回来自动成图直接粘贴 DDL把现有的建表脚本粘进去自动解析识别方言导入 DBML 文件把文本形式的数据库建模语言变成可视化图表选择完数据库类型向导会给出对应的操作指引。整个过程不需要数据库账号密码只要你有执行查询的权限——从安全角度讲这比那些要你填连接串、存密码的工具让人放心得多。第一步一条只读查询把整个库变成可视化ER图这是 ChartDB 最魔法的地方。以 PostgreSQL 为例进入应用后它会为你生成一段查询脚本这段脚本只做读取操作从系统目录中提取表、字段、主键、外键、索引、约束、自定义类型、视图等元数据并以 JSON 输出。关键的一点是这段脚本针对不同数据库做了专门优化。源码里src/lib/data/import-metadata/scripts/目录下按数据库分别维护了脚本——比如 PostgreSQL 的脚本会额外处理 Supabase 的auth、storage等内置 schema自动过滤掉不污染你的图遇到 TimescaleDB 也会跳过timescaledb_前缀的系统表。也就是说你在 Supabase 或 Timescale 上跑它得到的依然是一张干净的业务结构图。拿到 JSON 后贴回 ChartDB一张完整的 ER 图瞬间生成表用不同颜色区分字段标注主键PK、外键FK和非空约束关系线直接画出外键关联。这个能力对应的解析入口在src/lib/data/sql-import/里面按方言拆分了 PostgreSQL、MySQL、SQL Server、SQLite、Oracle 各自的解析器连pg_dump导出的备份文件格式都能识别。看到上图这种效果你就能理解为什么说它一条查询搞定可视化——之前几个小时的人工梳理现在压缩成了跑查询、粘贴、看图三步。第二步在画布上自由编辑用DBML把设计变成可版本控制的文本图生成之后ChartDB 不只是给你看的它是个真正的编辑器。你可以直接拖拽调整表的位置按业务模块分组摆放在画布上增删字段、改类型、加索引、加检查约束右键创建表之间的关系调整基数1:1、1:N、N:M用区域Area给表分组上底色把订单模块用户模块分得清清楚楚内置示例里的自行车商店数据库就是很好的示范客户信息、订单管理、产品信息、库存管理四块区域用不同颜色区分一张图就能讲清楚整个业务域。改完设计怎么和团队协作答案藏在 DBML 里。DBMLDatabase Markup Language是一种用纯文本描述数据库结构的建模语言比 SQL DDL 更简洁、更适合 diff 和版本控制。ChartDB 的 DBML 能力集中在src/lib/dbml/目录下拆成三个模块dbml-import/解析 DBML 文本还原成内部图表结构支持复合主键、枚举、表级检查约束等复杂特性dbml-export/把当前图表导出为标准 DBML保证双向转换一致apply-dbml/把一段新的 DBML 增量应用到现有图表上用于同步外部变更一份典型的 DBML 长这样Table users { id int [pk, increment] username varchar(50) [unique, not null] email varchar(100) [unique, not null] created_at timestamp [default: now()] } Table posts { id int [pk, increment] title varchar(100) [not null] content text user_id int [ref: users.id] status enum(draft, published, archived) indexes { (user_id, created_at) [name: idx_user_posts] } }把 DBML 放进 Git 仓库后每次设计变更都有清晰的 diff 记录评审时打开 ChartDB 看图比让同事硬读一段 DDL 高效得多。这套文本建模 可视化编辑的组合拳正好补上了传统 SQL 脚本难以直观展示表关系、又不便版本管理的短板。第三步跨数据库迁移AI生成与确定性转换双保险数据库迁移是另一个高频痛点。ChartDB 在导出 SQL 时给了两条路线路线一确定性转换纯本地、可复现。src/lib/data/sql-export/cross-dialect/里实现了 PostgreSQL 到 MySQL、MariaDB、SQL Server 的确定型转换SERIAL映射成AUTO_INCREMENT数组类型给出对应处理默认值、索引类型逐项翻译遇到无法完整转换的特性会在生成的脚本里加注释说明。对于不想依赖外部服务、要求结果可预期的场景这是首选。路线二AI 驱动的任意方言生成。在构建时配置VITE_OPENAI_API_KEY或自定义推理端点与模型名导出时就能让 AI 分析当前图表直接生成目标数据库的 DDL。MySQL 迁 PostgreSQL、SQLite 迁 MariaDB……语法差异、类型映射、约束保留都由模型处理适合快速拿到一版可用的迁移脚本。像上图这种多模块的复杂系统靠肉眼在脚本里找外键关系几乎不可能但生成迁移脚本时AI 和转换器都能基于完整的图结构来工作——先看清楚关系再决定怎么建表迁移的准确性自然比对着原始 DDL 硬改高一个档次。本地跑起来5分钟拥有自己的数据库设计台ChartDB 的部署也足够轻量。开发模式一条命令git clone https://gitcode.com/GitHub_Trending/ch/chartdb npm install npm run dev生产构建只要npm run build想启用 AI 导出能力构建时加上VITE_OPENAI_API_KEY你的Key即可。如果你更喜欢容器化官方 Docker 镜像一条命令搞定docker run -e OPENAI_API_KEY你的Key -p 8080:80 ghcr.io/chartdb/chartdb:latest打开http://localhost:8080浏览器就是你的设计工作台。由于是纯前端应用本地数据存在浏览器里隐私敏感的设计方案不用出本机。写在最后从看库到设计库的工作方式升级回到开头那个接手旧库的场景现在你可以跑一条只读查询拿到全貌在画布上把表拖成看得懂的模块图导出 DBML 提交到仓库作为活文档改动时有图可依、有 diff 可查要迁移时一键生成目标方言脚本。同样的工作从靠脑子硬扛变成了一条清晰的生产线。ChartDB 采用 AGPLv3 开源项目还内置了几十套社区模板用户认证、电商、CMS 等常见场景的完整设计直接拿来改比自己从零画快得多。如果你也厌倦了在 SQL 和想象力之间来回切换不妨现在就 clone 一份跑起来把第一个数据库画成图——你会发现数据库设计本该这么轻松。【免费下载链接】chartdbDatabase diagrams editor that allows you to visualize and design your DB with a single query.项目地址: https://gitcode.com/GitHub_Trending/ch/chartdb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考