免费工具
SQL 转 ER 图
粘贴 CREATE TABLE 语句或整个数据库结构(schema)的转储,即可得到 ER 图:每张表都带有列和键,每个外键都画成一条连线。SQL 方言会自动识别,支持 PostgreSQL、MySQL 和 MariaDB、SQL Server、SQLite,并部分支持 Oracle。试用无需账号。
示例输出
使用方法
粘贴或拖入 SQL
CREATE TABLE 语句、迁移文件,或用 pg_dump、mysqldump、SSMS、sqlite3 导出的完整转储都可以。可以一次拖入多个 .sql 文件,它们会合在一起读取,总计最多 8 MB。
查看 ER 图
每张表会变成一张卡片,列出各列及其类型,以及 PK、FK、UK 标记。每个外键会变成一条连线,从持有它的列指向它引用的键。
在 Archboard 中打开
保存为新图表后,可以重新排列、添加注释、分享链接,或导出为 SVG 和 PNG。注册只需 Google 或 GitHub 账号。
会从 SQL 中绘制哪些内容
图表根据 CREATE TABLE 语句中的以下部分生成:
CREATE TABLE每个 CREATE TABLE 都会成为一张以表名命名的卡片,每列一行:列名、类型,允许 NULL 的列还会带一个问号。卡片最多显示 24 列,其余列只显示数量。
PRIMARY KEYUNIQUE主键会在其包含的每一列上标为 PK,跨多列时也是如此。单列上的 UNIQUE 约束,或用 CREATE UNIQUE INDEX 在单列上创建的唯一索引,会把该列标为 UK。
FOREIGN KEYREFERENCESALTER TABLE无论是用 REFERENCES 内联写出、作为表约束声明,还是之后用 ALTER TABLE 添加的外键,都会画成两列之间的连线。像 parent_id 这样指回自身表的键也会显示。
CREATE SCHEMA用 CREATE SCHEMA 创建的模式,或出现在 sales.orders 这类名称中的模式,在 SQL 使用多个模式时会画成框,把各自的表框在里面。没有表的模式不画框。
NOT NULLUNIQUE用鸦脚记法的端点表示从列推断出的关系:NOT NULL 的外键表示必选,允许 NULL 的外键表示可选;外键同时是唯一键或主键时,关系为一对一。
可读取的 SQL 方言
PostgreSQL、MySQL 和 MariaDB、SQL Server、SQLite 都按各自的引号、注释和语句分隔规则读取,所以 pg_dump 文件、带 DELIMITER 块的 mysqldump,或满是 GO 行的 SSMS 脚本都可以直接使用。Oracle 只部分支持:表、键和外键会被绘制,以单独一行斜杠结尾的 PL/SQL 块会被跳过。线索相互矛盾时会改用通用读取器,你也可以随时自己选择方言。
ER 图不包含的内容
- 数据行。INSERT、COPY 等数据语句会直接跳过、不被读取,所以带数据的转储和只含模式的转储生成的图表相同。
- 视图、函数、存储过程、触发器和序列。它们会被跳过,预览会显示每类各跳过了多少个。mysqldump 写在版本注释中的视图和触发器会作为注释跳过,不计入数量。
- 默认值、CHECK 表达式、注释,以及 ENUM 和 SET 列的可选值。列上只显示名称、类型和键标记。
- 运行中服务器上的任何信息。该工具只读取你提供的 SQL 文本,不连接任何数据库,因此不会显示行数、表大小或查询计划。
SQL 转 ER 图常见问题
支持哪些 SQL 方言?
PostgreSQL、MySQL 和 MariaDB、SQL Server、SQLite,并部分支持 Oracle。方言根据反引号、GO 行、美元引号等线索识别,预览会显示读取时使用的方言。如果识别有误,请从列表中选择其他方言,所选方言会保持不变。对于其他数据库,通用读取器会读取标准的 CREATE TABLE 和 ALTER TABLE 语句。
可以粘贴带数据的完整转储吗?
可以。INSERT 和 COPY 语句会连同 SET 行、注释和转储中的其他杂项一起被跳过、不被读取,所以生成的图表与只含模式的转储相同。不过,只含模式的转储更小、读取更快:pg_dump --schema-only、mysqldump --no-data,或在 sqlite3 中使用 .schema。
能读取多大的模式?
最多 8 MB 的 SQL 和 1000 张表。超过 2 MB 的文本不会显示在文本框中,但仍会被读取。图表本身最多容纳 2000 个元素,表、连线和模式框合并计算,因此关联很多的模式可能先达到这个上限;这时按模式分别导出会有帮助。
支持 Oracle 吗?
部分支持。SQL Developer 等工具生成的 Oracle 脚本可以通过 VARCHAR2、NUMBER 和单独的斜杠行识别,你也可以在方言列表中选择 Oracle。CREATE TABLE、主键、唯一约束以及用 ALTER TABLE 添加的外键都会被绘制。PL/SQL 包、触发器和其他以斜杠行结尾的块会被跳过,CONNECT 和 GRANT 语句也会被跳过。
在 Archboard 中打开图表时会保存什么?
预览不会被保存。选择“在 Archboard 中打开”后,绘制出的图表,即带有列名和类型的表卡片以及它们之间的连线,会作为新图表保存到你的工作区中。它只是当时的快照:之后对模式的修改不会更新它。
SQL 转 ER 图工具免费吗?
是的。粘贴 SQL 和查看图表无需账号。在 Archboard 中打开图表需要一个免费账号。