在 DSH 工作流中,維護數據庫結構變更是常見需求。手動編寫 ALTER TABLE 或對比兩個 DDL 文件容易出錯且耗時。dsh-db-migration 旨在自動化這一過程,通過對比兩個 SQL DDL 文件來生成遷移腳本。
該插件由 uckkk 維護,是一個純 Node 實現、無網絡依賴的工具。它專注於檢測兩個 DDL 文件在表結構和列定義上的差異,並輸出相應的 ALTER TABLE 或 DROP TABLE 語句。
核心功能¶
該插件主要處理 DDL 層面的變更檢測與 SQL 生成:
- DDL 對比與統計:對比舊版/新版 DDL,返回結構差異統計以及生成的遷移 SQL。
- 表級變更:識別新增或刪除的表,生成
CREATE TABLE或DROP TABLE語句。 - 列級變更:識別新增或刪除的列,生成
ALTER TABLE ADD/DROP COLUMN語句。 - 列類型變更:識別列類型的修改,生成
ALTER TABLE MODIFY COLUMN語句。 - 類型支持:支持常見類型,包括帶括號的類型,如
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)。