介绍
SQL-Diff 是一个基于 AST 语法树的智能 SQL 表结构比对工具,支持交互式多行输入。
什么是 SQL-Diff?
SQL-Diff 可以:
- 🎯 交互式输入 支持多行 SQL 直接粘贴,无需转义
- 🔍 精准比对 两个 MySQL 表结构的差异
- 🚀 自动生成 ALTER TABLE 等 DDL 补全语句
- 🤖 AI 分析 提供智能优化建议和风险提示(可选)
- 💻 美观输出 分类显示、彩色标注、一目了然
核心优势
1. 交互式输入(新)
支持直接粘贴多行 SQL,完美解决换行符问题:
bash
# 启动交互式模式
sql-diff -i
# 按提示粘贴 SQL(支持多行)
# 按 Ctrl+D 结束输入
# 自动生成 DDL!适用场景:
- 从 Navicat、MySQL Workbench 复制表结构
- 处理包含注释的复杂 SQL
- 大型表结构比对(几十个字段)
2. 精准高效
基于 AST 语法树解析,准确识别:
- 新增列
- 修改列(类型、长度、约束、默认值)
- 删除列
- 索引变更
3. 智能分析
可选接入 AI 大模型(DeepSeek 等),提供:
- 📊 差异分析
- ✨ 优化建议
- ⚠️ 风险提示
- 📖 最佳实践
4. 使用简单
bash
# 交互式模式(推荐)
sql-diff -i
# 命令行模式
sql-diff -s "源表SQL" -t "目标表SQL"
# 启用 AI 分析
sql-diff -i --ai
# Web 界面模式
sql-diff web5. 安全可靠
- 删除操作自动注释,防止误删
- 环境变量管理敏感信息
- 完整的测试覆盖(100%)
6. Web 界面友好
- 🌐 现代化的 Web 可视化界面
- 🌗 支持浅色/深色主题切换
- 🖱️ 图形化操作,无需记忆命令
- 📱 响应式设计,支持各种设备
应用场景
数据库迁移
在版本升级时,快速生成迁移脚本:
bash
sql-diff \
-s "$(cat schema/v1.0.sql)" \
-t "$(cat schema/v2.0.sql)" \
-o migration.sql代码审查
在 Pull Request 中分析表结构变更:
bash
git show HEAD~1:schema.sql > old.sql
git show HEAD:schema.sql > new.sql
sql-diff -s "$(cat old.sql)" -t "$(cat new.sql)" --ai性能优化
使用 AI 分析索引优化:
bash
sql-diff -s "当前表结构" -t "优化后表结构" --aiCI/CD 集成
在持续集成中自动检查表结构变更:
yaml
- name: Check Schema Changes
run: |
sql-diff -s "$OLD_SCHEMA" -t "$NEW_SCHEMA" --ai技术特点
AST 解析
使用抽象语法树方式解析 SQL,比简单的字符串匹配更精准:
- 支持各种 SQL 语法
- 准确识别字段属性
- 正确处理注释和空格
美观输出
分类显示,一目了然:
- ➕ 新增列(绿色)
- 🔄 修改列(黄色)
- 🗑️ 删除列(红色,已注释)
- 📇 新增索引(青色)
- 🗂️ 删除索引(紫色,已注释)
灵活配置
支持多种配置方式:
- 环境变量(推荐)
- 配置文件
- 命令行参数
性能指标
| 指标 | 数值 |
|---|---|
| 解析速度 | < 1ms |
| AI 响应时间 | 6-7秒 |
| AI 分析成本 | < ¥0.002/次 |
| 准确率 | 100% |