用一条查询画出 8 种数据库的关系图:ChartDB 上手指南
【免费下载链接】chartdbDatabase diagrams editor that allows you to visualize and design your DB with a single query.项目地址: https://gitcode.com/GitHub_Trending/ch/chartdb
接手别人的项目,外键到底指向哪张表,翻了几十个 CREATE TABLE 还没理清,窗口一关又是一片空白。ChartDB 就是为这类场景做的。
ChartDB 是一个开源的数据库关系图编辑器:把一条「智能查询」的 JSON 结果贴进浏览器,整库的表结构就变成一张可编辑的 ER 图,不需要安装客户端,也不需要数据库密码。
五分钟上手:四步画出关系图
- 克隆仓库并启动本地开发:
git clone https://gitcode.com/GitHub_Trending/ch/chartdb cd chartdb && npm install && npm run dev执行后终端会打印本地访问地址,浏览器打开,你会看到 ChartDB 的首页。
点「New Diagram」,选择你的数据库类型(PostgreSQL、MySQL、SQL Server、Oracle、SQLite、MariaDB、ClickHouse、CockroachDB 都支持)。选完左侧会生成一段现成的「智能查询」SQL,你会看到一段可以直接复制去执行的查询。
在数据库里执行这条查询,把返回的 JSON 复制回输入框。输入框会自动识别内容类型并实时显示校验状态,你会看到 JSON 被高亮、错误信息(如果有)出现在编辑器下方。
- 点「Import」。画布上出现完整的数据库关系图:每张表、每个字段、外键连线一目了然。
智能查询为什么能免密码
为什么难做:可视化数据库通常要靠客户端连接,那就绕不开密码;而且各库的元数据存放位置完全不同——PostgreSQL 在 pg_catalog,SQL Server 在 sys.tables,ClickHouse 在 system.tables,等于每种数据库都要单独写一套取数逻辑。
ChartDB 的做法:为每种数据库内置一条「智能查询」,把表、字段、索引、外键、视图一次性聚合成一个 JSON。你只需用数据库工具执行它(只读权限就够),把结果贴回来,全程不用交出密码。各库的取数脚本集中在 智能查询脚本目录。
三种内容怎么粘进来:JSON、DDL、DBML
为什么难做:DDL、DBML、JSON 粘进编辑器后都是「一堆文本」,如果还要用户自己先选对模式,就多了一个出错点。
它的实现:粘贴后按正则规则自动判断——出现Table xxx {、[pk]这类 DBML 标记就识别为 DBML,出现CREATE TABLE等关键字就识别为 DDL,否则按 JSON 处理,逻辑见 detect-import-method.ts。DDL 还会按所选数据库的方言做语法校验,可自动修复的语法问题会给出「Try auto-fix」一键修复按钮,不用自己逐行找错。
跨方言导出:一张图变成目标库的 DDL
为什么难做:MySQL 和 PostgreSQL 的方言差异在细节里,反引号对双引号、auto_increment 对 serial,直接替换字符串很容易产出一段跑不通的脚本。
它的实现:ChartDB 为方言之间维护类型映射表做确定性转换,目前内置 PostgreSQL 到 MySQL、MariaDB、SQL Server 的转换路径;目标库不支持的特性不会静默丢弃,而是以注释形式写进脚本提醒。代码在 跨方言导出模块,另支持配置 API Key 后用 AI 生成目标库 DDL。
场景一:三分钟看懂新项目的 MySQL 表结构
场景描述:同事刚交接,项目用 MySQL,你写查询前需要理清表之间的关系。
操作路径:启动 ChartDB,选 MySQL,执行智能查询,把 JSON 粘回输入框,点 Import。
你会得到的结果:一张可拖拽、可缩放的关系图,表名、字段、主外键都在图上,外键关系一眼看全,不用再对着建库脚本反复对照。
场景二:PostgreSQL 迁移 MySQL 前先出迁移脚本
场景描述:业务准备把 PostgreSQL 迁到 MySQL,你需要交一份能直接在目标库执行的 DDL。
操作路径:导入 PostgreSQL 的关系图,在「Export SQL」里把目标数据库选为 MySQL。
你会得到的结果:一份 MySQL 方言的 DDL 脚本,其中目标库不支持的特性以注释标出,哪些要手工处理一目了然,交付前心里有数。
避坑与技巧
- SSMS 截断:SQL Server 在 SSMS 里跑查询时,默认展示可能在 65535 字符处截断;粘贴恰好这个长度的结果时 ChartDB 会弹提示,按内置说明重新导出不截断的结果即可。
- 超大 JSON:内容超过 2MB 时编辑器会跳过自动格式化,防止浏览器卡死;JSON 有损坏时点 Check 按钮可自动修复。
- 版本选择:用 Supabase 或 Cloudflare D1 时记得选对应版本,auth、storage 等系统表会被自动过滤,图上不会出现一堆噪音表。
- AI 导出:想让 AI 生成目标库 DDL,需要构建时传入 OPENAI_API_KEY 环境变量;不配置也能用内置的确定性导出路径。
上手命令
docker run -e OPENAI_API_KEY=<YOUR_OPEN_AI_KEY> -p 8080:80 ghcr.io/chartdb/chartdb:latest执行后浏览器打开 http://localhost:8080,你会看到 ChartDB 首页,从导入第一张数据库关系图开始。
把上面那行命令跑起来,两分钟后就能看到自己数据库的第一张关系图。
【免费下载链接】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),仅供参考