数据库 Schema 对比

比较两个数据库 Schema 并生成迁移草案

支持 SQL DDL 或 JSON/YAML schema 摘要,输出表、字段、索引、外键差异以及迁移 SQL 草案。

示例结果

2 个示例

比较 SQL DDL 并生成 PostgreSQL 迁移草案

展示新增必填字段和索引后的 Schema 变化,并生成对应迁移 SQL。

{
  "summary": {
    "tablesAdded": 0,
    "tablesRemoved": 0,
    "columnsAdded": 1,
    "columnsRemoved": 0,
    "columnsChanged": 0,
    "indexesChanged": 1,
    "foreignKeysChanged": 0,
    "totalChanges": 2
  },
  "migrationSQL": "ALTER TABLE users ADD COLUMN email TEXT NOT NULL;\nCREATE INDEX idx_users_email ON users (email);"
}
查看输入参数
{ "sourceSchema": "CREATE TABLE users (\n id INT PRIMARY KEY,\n name TEXT\n);", "targetSchema": "CREATE TABLE users (\n id INT PRIMARY KEY,\n name TEXT,\n email TEXT NOT NULL\n);\nCREATE INDEX idx_users_email ON users (email);", "schemaFormat": "sql", "dialect": "postgresql" }

对比 JSON Schema 并输出 SQLite 删除提示

比较删除了一张表和一个字段的 JSON Schema 摘要,同时展示 SQLite 需要重建表的提示。

{
  "summary": {
    "tablesRemoved": 1,
    "columnsRemoved": 1
  },
  "migrationSQL": "DROP TABLE audit_logs;\n-- SQLite requires table rebuild to drop column users.email"
}
查看输入参数
{ "sourceSchema": "{\n \"tables\": {\n \"users\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n },\n \"email\": {\n \"type\": \"TEXT\",\n \"nullable\": false\n }\n }\n },\n \"audit_logs\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n }\n }\n }\n }\n}", "targetSchema": "{\n \"tables\": {\n \"users\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n }\n }\n }\n }\n}", "schemaFormat": "json", "dialect": "sqlite" }

关键信息

分类
开发与 Web
输入类型
textarea, select
输出类型
json
样本覆盖
4
支持 API
Yes

概览

一款高效的数据库 Schema 对比工具,支持自动解析 SQL DDL 或 JSON/YAML 格式的表结构摘要。通过输入源数据库和目标数据库的 Schema,工具能快速比对表、字段、索引及外键的差异,并自动生成适用于 MySQL、PostgreSQL 或 SQLite 的迁移 SQL 草案,帮助开发者安全、准确地完成数据库版本升级与变更。

适用场景

  • 需要在开发环境与生产环境之间同步数据库表结构时。
  • 团队协作开发中,需要快速生成数据库变更的迁移脚本(Migration SQL)时。
  • 重构旧项目数据库,需要比对新旧 JSON/YAML 结构摘要以确认字段增删情况时。

工作原理

  • 在“源 Schema”和“目标 Schema”文本框中分别粘贴当前和期望的数据库结构代码(支持 SQL DDL 或 JSON)。
  • 选择对应的 Schema 格式(自动识别、SQL DDL 或 JSON/YAML)以及目标数据库方言(MySQL、PostgreSQL 或 SQLite)。
  • 工具将解析并比对两个结构,提取表、字段、索引等维度的差异。
  • 最终输出包含变更统计摘要(如新增字段、删除表)及具体迁移 SQL 草案的 JSON 结果。

使用场景

后端开发者在迭代业务需求后,生成 PostgreSQL 数据库的增量更新脚本(如新增必填字段和索引)。
数据库管理员(DBA)在发布上线前,核对测试库与线上库的 DDL 差异,防止遗漏变更。
架构师在重构系统时,通过比对 JSON 格式的 Schema 摘要,快速评估表结构精简对现有系统的影响。

用户案例

1. 生成 PostgreSQL 字段与索引迁移脚本

后端开发工程师
背景原因
业务需求要求在用户表中增加邮箱字段,并为其添加索引以提升查询速度。
解决问题
需要快速生成从旧版表结构到新版表结构的增量 SQL 脚本。
如何使用
将旧版 users 表的 DDL 粘贴至“源 Schema”,将包含 email 字段及索引的新版 DDL 粘贴至“目标 Schema”,方言选择“PostgreSQL”。
示例配置
schemaFormat: sql, dialect: postgresql
效果
工具输出 JSON 结果,统计出新增 1 个字段和 1 个索引,并生成 ALTER TABLE users ADD COLUMN email TEXT NOT NULL; 及创建索引的迁移 SQL 草案。

2. 评估 SQLite 数据库的结构精简

移动端开发工程师
背景原因
App 本地数据库需要移除废弃的审计日志表(audit_logs)和用户表中的冗余字段。
解决问题
确认 JSON 格式的 Schema 变更,并获取 SQLite 的迁移操作提示。
如何使用
在源和目标输入框中分别粘贴修改前后的 JSON Schema 摘要,格式选择“JSON 或 YAML”,方言选择“SQLite”。
示例配置
schemaFormat: json, dialect: sqlite
效果
工具识别出删除了 1 张表和 1 个字段,生成 DROP TABLE audit_logs; 语句,并输出 SQLite 需要重建表以删除字段的警告注释。

用 Samples 测试

sql

相关专题

常见问题

支持哪些数据库方言?

目前支持 MySQL、PostgreSQL 和 SQLite,也可以选择“自动识别”让工具自行判断。

可以直接连接我的生产数据库吗?

不可以。本工具为纯文本比对工具,不提供直连数据库功能,请手动导出 SQL DDL 或 JSON 摘要后粘贴使用。

为什么 SQLite 删除字段时没有生成 DROP COLUMN 语句?

因为 SQLite 对 ALTER TABLE 的支持有限,删除字段通常需要重建整张表。工具会在生成的迁移草案中输出相关的重建提示注释。

支持比对 JSON 格式的 Schema 吗?

支持。您可以选择“JSON 或 YAML”格式,工具会解析其中的表和字段定义进行比对。

输出的迁移 SQL 可以直接执行吗?

输出的 SQL 为迁移草案,建议在实际执行前由 DBA 或开发人员进行人工复核,以确保数据安全。

API 文档

请求端点

POST /zh/api/tools/database-schema-diff

请求参数

参数名 类型 必填 描述
sourceSchema textarea -
targetSchema textarea -
schemaFormat select -
dialect select -

响应格式

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
JSON数据: JSON数据

AI MCP 文档

将此工具添加到您的 MCP 服务器配置中:

{
  "mcpServers": {
    "elysiatools-database-schema-diff": {
      "name": "database-schema-diff",
      "description": "比较两个数据库 Schema 并生成迁移草案",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=database-schema-diff",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

你可以串联多个工具,比如:`https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`,最多20个。

如果遇见问题,请联系我们:[email protected]