Oracle 匯出 Schema 好用工具
最近公司專案需要在另一個環境重建一批 Oracle 資料表 Schema,結果手上的既有工具不太順手,尤其當 table 數量一多,人工一個一個匯就很痛苦。後來找到一個 command line 工具,拿來快速匯出 DDL 還不錯。
這類需求常見在哪
通常會遇到這種需求的場景像是:
- 建立測試環境。
- 比對不同環境的資料表結構。
- 想把 Oracle schema 轉成可追蹤的 SQL 檔案。
如果只是偶爾看單一 table,很多 GUI 工具也行;但要大量匯出時,command line 工具反而比較有效率。
scheme2ddl
我當時找到的是這個:
qwazer/scheme2ddl: Command line util for export oracle schema to set of ddl scripts
執行方式像這樣:
|
|
我當時最大的感受就是速度滿快,對於一次要拉出很多 table 定義來說很省時間。
使用前我會先注意什麼
- 帳號是否有足夠權限讀取 schema 資訊。
- Oracle 連線字串是否正確。
- 匯出的內容是否包含你要的物件類型。
- 版本相容性要先確認,不要直接拿去打老環境或特殊環境。
尤其第 3 點很重要,因為有些時候你不只要 table,還可能想要 index、sequence、constraint、view,這要先確認工具支援程度。
這類工具的價值
我覺得這類工具最實用的地方,不只是「匯得出來」,而是能把結構轉成檔案,方便:
- 放進版控。
- 做差異比對。
- 當成環境建置的基礎。
比起只在 GUI 中右鍵匯出一次,後續維護會方便很多。
其他看到的工具
MySQL 我當時就沒特別找,因為像 phpMyAdmin、Workbench 之類現成工具通常已經夠用。
另外也剛好看到這些:
k0kubun/sqldef: Idempotent MySQL/PostgreSQL schema management by SQL
之前也有記過相關工具:快速產生資料表 alter table 語法 schemalex | 程式狂想筆記
DB2 方向則看到:
qwazer/db2-scheme2ddl: Command line util for export IBM DB2 schema to set of ddl scripts
這兩個我當時沒有實測,但先記著,之後如果剛好遇到 DB2 專案也許會派上用場。