DB2 圖形化工具功能強大但啟動緩慢、操作繁瑣,且難以記錄追蹤批量操作歷程。Windows 批次檔(.bat/.cmd)具備執行速度快、擅長批次處理、文字格式易於版控與稽核的特性,恰好解決上述痛點,是存儲程序開發階段的輕量級利器。
參數化連線目標(dev/test/prod/off),簡化指令為 conn dev,自動帶入帳密並修改提示符顯示當前環境,避免誤操作生產庫。可被其他腳本呼叫實現鏈式操作。
用法:esql test.sql [logs\out.log]
特點:
- 使用 -td@ 設定 SQL 分隔符
- -z 參數同時輸出至控制台與日誌檔
- 記錄開始/結束時間(values(current time))便於效能分析
單一指令輸出:表/視圖結構(describe table ... show detail)、主鍵欄位(查詢 syscat.columns.keyseq)、前 20 筆資料、視圖 DDL(syscat.views.text)、視圖相依基礎表(syscat.viewdep),結果自動以記事本開啟。
從 syscat.routines 擷取 DDL(使用 VARCHAR(text,32670) 避免 CLOB 截斷),並透過 syscat.packagedep 關聯 sysibm.sysdependencies 反推存儲程序使用的表/視圖。
一次查詢三大系統視圖:
syscat.packagedep → 存儲程序(透過 package 關聯)syscat.routinedep → UDFsyscat.viewdep → 視圖輸出分區塊標示,便於影響分析。
MIS.ORDER 表:新增 GOV_FLAG SMALLINT、移除冗餘欄位 ORDER_PRICE_TOT DECIMAL(19,4),保留既有資料。
| 角色 | 任務 | 關鍵腳本/動作 |
|---|---|---|
| 專案主管 | 影響分析、任務分派 | viewtable MIS ORDER、dep MIS ORDER 獲取相依物件,制定任務表 |
| 開發 A | 表結構變更與資料遷移 | 備份資料 → 刪除相依 UDF/視圖 → 重建表 → 還原資料 → 重載 UDF → rebind SP |
| 開發 B | 修改 SP_ADD_ORDER | view SP_ADD_ORDER 取得最新版 → 修改 → esql 部署 → 測試 |
| 開發 C | 修改 F_CHECK_ORDER、V_ORDER | 刪除相依物件 → 重建 UDF/視圖 → 還原相依 → 測試 |
| 專案主管 | 整合部署至測試庫 | 合併所有腳本,改連 conn test 統一執行 |
rem 連接開發資料庫 dev
conn dev
rem 備份表
esql BACKUP_MIS_ORDER.SQL
rem 刪除相依 UDF
esql DROP_UDF_4_ORDER.SQL
rem 重建表
esql ORDER.SQL
rem 還原資料
esql RESTORE_MIS_ORDER.SQL
rem 重載 UDF
esql RELOAD_UDF_4_ORDER.SQL
rem rebind 相關 SP
esql REBIND_SP_4_ORDER.SQL
rem 斷開連接
conn off
將常用 DB2 操作封裝為參數化批次腳本,配合系統表查詢實現元資料驅動開發,不僅消除重複勞動,更建立了可追蹤、可重現、團隊共享的操作規範。隨著團隊熟練度提升,開發效率與品質將顯著躍升。