免费工具

SQL 转 ER 图

粘贴 CREATE TABLE 语句或整个数据库结构(schema)的转储,即可得到 ER 图:每张表都带有列和键,每个外键都画成一条连线。SQL 方言会自动识别,支持 PostgreSQL、MySQL 和 MariaDB、SQL Server、SQLite,并部分支持 Oracle。试用无需账号。

示例输出

由 SQL 示例绘制的示例图表
试试示例网上商店(PostgreSQL)多租户 SaaS(PostgreSQL)电商店面(MySQL)人事与薪资(SQL Server)笔记应用(SQLite)网上商店(Oracle)

使用方法

  1. 粘贴或拖入 SQL

    CREATE TABLE 语句、迁移文件,或用 pg_dump、mysqldump、SSMS、sqlite3 导出的完整转储都可以。可以一次拖入多个 .sql 文件,它们会合在一起读取,总计最多 8 MB。

  2. 查看 ER 图

    每张表会变成一张卡片,列出各列及其类型,以及 PK、FK、UK 标记。每个外键会变成一条连线,从持有它的列指向它引用的键。

  3. 在 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 中打开图表需要一个免费账号。

一分钟打开画布

使用 Google 或 GitHub 登录。单席位免费,团队加入后再升级。