Contents

Oracle 匯出 Schema 好用工具

最近公司專案需要在另一個環境重建一批 Oracle 資料表 Schema,結果手上的既有工具不太順手,尤其當 table 數量一多,人工一個一個匯就很痛苦。後來找到一個 command line 工具,拿來快速匯出 DDL 還不錯。

這類需求常見在哪

通常會遇到這種需求的場景像是:

  1. 建立測試環境。
  2. 比對不同環境的資料表結構。
  3. 想把 Oracle schema 轉成可追蹤的 SQL 檔案。

如果只是偶爾看單一 table,很多 GUI 工具也行;但要大量匯出時,command line 工具反而比較有效率。

scheme2ddl

我當時找到的是這個:

qwazer/scheme2ddl: Command line util for export oracle schema to set of ddl scripts

執行方式像這樣:

1
java -jar scheme2ddl-2.4.3-SNAPSHOT.jar -url _DB_USERID_/_DB_PASSWORD_:@_Oracle_IP_:1521:_DBNAME_ -o D:/temp/

我當時最大的感受就是速度滿快,對於一次要拉出很多 table 定義來說很省時間。

使用前我會先注意什麼

  1. 帳號是否有足夠權限讀取 schema 資訊。
  2. Oracle 連線字串是否正確。
  3. 匯出的內容是否包含你要的物件類型。
  4. 版本相容性要先確認,不要直接拿去打老環境或特殊環境。

尤其第 3 點很重要,因為有些時候你不只要 table,還可能想要 index、sequence、constraint、view,這要先確認工具支援程度。

這類工具的價值

我覺得這類工具最實用的地方,不只是「匯得出來」,而是能把結構轉成檔案,方便:

  1. 放進版控。
  2. 做差異比對。
  3. 當成環境建置的基礎。

比起只在 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

qwazer/db2-table2sql

這兩個我當時沒有實測,但先記著,之後如果剛好遇到 DB2 專案也許會派上用場。