dsh-db-migration:数据库迁移 SQL 生成工具

在 DSH 工作流中,维护数据库结构变更是常见需求。手动编写 ALTER TABLE 或对比两个 DDL 文件容易出错且耗时。dsh-db-migration 旨在自动化这一过程,通过对比两个 SQL DDL 文件来生成迁移脚本。

该插件由 uckkk 维护,是一个纯 Node 实现、无网络依赖的工具。它专注于检测两个 DDL 文件在表结构和列定义上的差异,并输出相应的 ALTER TABLE 或 DROP TABLE 语句。

核心功能

该插件主要处理 DDL 层面的变更检测与 SQL 生成:

  1. DDL 对比与统计:对比旧版/新版 DDL,返回结构差异统计以及生成的迁移 SQL。
  2. 表级变更:识别新增或删除的表,生成 CREATE TABLE 或 DROP TABLE 语句。
  3. 列级变更:识别新增或删除的列,生成 ALTER TABLE ADD/DROP COLUMN 语句。
  4. 列类型变更:识别列类型的修改,生成 ALTER TABLE MODIFY COLUMN 语句。
  5. 类型支持:支持常见类型,包括带括号的类型,如 DECIMAL(10,2)、VARCHAR(255) 以及 ENUM('a','b')。

安装与启用

安装该插件需要使用 DeepSeek Harness 的命令行工具。

dsh plugin add github:uckkk/dsh-db-migration

安装完成后,需要在 profile 的 package.json 配置文件中启用该 bundle。在 dsh.profile.bundles 字段中加入:

"dsh-db-migration"

典型用法

安装成功后,可以在会话中调用该插件注册的工具。核心工具为 diff_schema。

示例:对比 schema_v1.sql 和 schema_v2.sql,将生成的迁移 SQL 输出到 migrations/20260816_up.sql。

diff_schema(oldFile="schema_v1.sql", newFile="schema_v2.sql", outFile="migrations/20260816_up.sql")

适用场景与注意

适用场景:适用于需要快速生成数据库结构迁移脚本的场景,特别是当需要对比两个版本的 DDL 文件并找出差异时。

注意范围:
* 该插件覆盖常见 CREATE TABLE 语法(MySQL/PostgreSQL/SQLite 基础列定义)。
* 不处理外键、索引、复合主键、复杂默认值或触发器。
* 生成的迁移 SQL 仅作为起点,涉及线上数据时请务必人工复核后再执行。
* 安装即在本机运行第三方代码,请自行审阅源码与许可证(MIT)。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜