# 数据库 Schema 对比

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

> 标准页面: https://elysiatools.com/zh/tools/database-schema-diff

- **分类:** Development

- **关键词:** 数据库, schema, 对比, 迁移, sql, ddl, postgres, mysql, sqlite

## 概述

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

## 输入项

- **源 Schema** (textarea): Paste the current schema SQL or JSON here...
- **目标 Schema** (textarea): Paste the desired schema SQL or JSON here...
- **Schema 格式** (select)
- **方言** (select)

## 适用场景

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

## 工作原理

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

## 使用案例

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

## 常见问题

### 支持哪些数据库方言？

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

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

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

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

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

### 支持比对 JSON 格式的 Schema 吗？

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

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

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

## 相关工具

- [数据库备份生成器](https://elysiatools.com/zh/tools/database-backup-generator): 为数据库表生成SQL备份脚本
- [数据库迁移生成器](https://elysiatools.com/zh/tools/database-migration-generator): 为数据库架构更改生成SQL迁移脚本
- [表结构生成器](https://elysiatools.com/zh/tools/table-schema-generator): 生成SQL表结构定义
- [CSV 转数据库迁移规划器](https://elysiatools.com/zh/tools/csv-to-database-migration-planner): 根据 CSV 数据推断关系型 schema，并为 PostgreSQL、MySQL、SQLite 或 SQL Server 生成建表和 ALTER 迁移计划
- [XLSX SQL 插入语句生成器](https://elysiatools.com/zh/tools/xlsx-sql-insert-generator): 读取 Excel 表头与数据，生成 SQL INSERT 语句
- [SQL 方言互译桥](https://elysiatools.com/zh/tools/sql-dialect-bridge): 在 MySQL / PostgreSQL / SQLite / BigQuery / Snowflake / Redshift 之间互译 DDL、DML、函数与类型，并标注不支持的写法
- [SQL 执行计划可视化器](https://elysiatools.com/zh/tools/sql-explain-plan-visualizer): 粘贴 EXPLAIN / EXPLAIN ANALYZE 输出（PostgreSQL/MySQL/SQLite），渲染为成本树，标注估算行数与实际行数的偏差热点，并给出具体的索引建议
- [SQL查询构建器](https://elysiatools.com/zh/tools/sql-query-builder): 可视化构建简单SQL查询

## 示例

- [MySQL 数据库示例](https://elysiatools.com/zh/samples/mysql-database-samples): 各种复杂度级别的MySQL数据库脚本示例，从简单表到企业ERP系统
- [Android Java 数据库示例](https://elysiatools.com/zh/samples/android-database-java): Android Java 数据库示例，包括SQLite连接、SQL查询和事务处理
- [Android Kotlin 数据库示例](https://elysiatools.com/zh/samples/android-database-kotlin): Android Kotlin 数据库示例，包括SQLite连接、执行SQL查询和事务处理
- [macOS Objective-C 数据库示例](https://elysiatools.com/zh/samples/macos-database-objectivec): macOS Objective-C 数据库示例，包括SQLite CRUD操作、查询、事务和连接管理

## 相关内容

- [数据库 Schema、迁移与 SQL 工作流工具](https://elysiatools.com/zh/hubs/database-schema-migration): 在一个专题中完成建表规划、SQL 生成、数据库变更对比、关系校验，以及将表格数据整理为可入库格式。
- [SQL 查询审查、性能与关系完整性工具](https://elysiatools.com/zh/hubs/sql-query-review-performance-and-integrity): 把 SQL 格式化、Join 组装、EXPLAIN 计划检查、注入风险识别、外键校验和 schema 漂移对比放进一个面向审查的 SQL 工作流专题。
- [文件与数据对比 / Diff 工具](https://elysiatools.com/zh/hubs/file-data-diff-comparison-tools): 并排对比两份文件、数据载荷、数据库结构或数据集，高亮其中的变化——覆盖文本、JSON、CSV/Excel、PDF、图片、音频、数据库、API 与配置文件。
- [JSON Schema、Mock 数据与 API 夹具生成工具](https://elysiatools.com/zh/hubs/json-generate): 围绕JSON Schema 生成、Mock 负载构建与 API 夹具准备整理的一组工具。
