TOP書籍連動> PostgreSQLからOracleへのデータ移行
まるごと PostgreSQL!
PostgreSQLとOracleによるデータベース相互移行マニュアル

第2回:データの移行(1)
著者:奥畑 裕樹(OKUHATA, Hiroki)   2005/10/18
1   2  次のページ
PostgreSQLからOracleへのデータ移行

   PostgreSQLからOracleへデータを移行する際には、PostgreSQL付属のエクスポートツールである「pg_dump」を使うとラクです。

   PostgreSQLの移行元データベース名を「tsukaeru」とすると、データをエクスポートするコマンドは次のようになります。「-D」オプションを付けると、データがINSERT文を使って出力されます。

% pg_dump -D tsukaeru > tsukaeru.sql
   図1のように、pg_dumpはテキスト形式でデータをエクスポートしますので、データ型の修正が容易です。次ページの表1などを参考にしてデータ型を修正します。

pg_dumpの出力例
図1:pg_dumpの出力例
(画像をクリックすると別ウィンドウに拡大表示します)


   pg_dumpの出力には、ファンクションの定義なども含まれますので、余計な部分はコメントアウトするか削除する必要があります。

   続いて、修正したデータをOracleに投入するには、SQL*Plusを用います。

% sqlplus user/pass < tsukaeru.sql
   コマンドが成功すれば、データ移行は完了です。


OracleからPostgreSQLへのデータ移行

   OracleからPostgreSQLも同じように、まずはテキスト形式でデータをエクスポートします。

   Oracleには、テキスト形式でデータをエクスポートできるさまざまな製品がありますので、それらを使うか、もしくはExcelなどを使ってODBC接続経由で取得してもよいでしょう。

   ここでは、Ora2Pgを使う方法を紹介します。Ora2Pgは、OracleからPostgreSQLへのデータ移行を行うPerlモジュールです。Ora2Pgは、PostgreSQLソースコード配布パッケージのcontrib/oracleフォルダに入っています。

   Ora2Pgは、Oracleからのデータのエクスポートと、PostgreSQLに合わせたデータ型の変更を一度にやってくれます。具体的には、Oracleからテーブルの定義とデータを読み取り、PostgreSQLのデータ型に変更した後、テキスト形式で出力します。テキストの形式は、pg_dumpと同じように、CREATE TABLE文やINSERT文を使ってデータを投入する形式です。

   また、同時に両方のデータベースに接続して、データ型を変換しつつ投入もしてくれるモードも

   あるのですが、後に述べますようにうまくいかないものもありますので、いったんテキストファイルに出力する方法を取るのがよいでしょう。

   Ora2Pgによるデータ型の変換内容は、表3を参照してください。

Oracleデータ型 Ora2Pgによる変換
文字型
CHAR(n) CHAR(n)
NCHAR(n) CHAR(n)
VARCHAR(n) VARCHAR(n)
NVARCHAR(n) VARCHAR(n)
VARCHAR2(n) VARCHAR(n)
NVARCHAR2(n) VARCHAR(n)
LONG TEXT
CLOB TEXT
数値型
NUMBER NUMERIC
FLOAT FLOAT8
日付型
DATE TIMESTAMP
バイナリ型
RAW(n) TEXT
LONG RAW TEXT
BLOB TEXT
BFILE TEXT
その他
ROWID OID

表3:Ora2Pgのデータ型変換表

1   2  次のページ

書籍紹介
まるごと PostgreSQL! Vol.1
まるごと PostgreSQL! Vol.1 日本での市場シェアNo.1(オープンソースRDBMS部門)データベースソフトPostgreSQLの最新情報を、開発メンバーを含む豪華執筆陣が多面的かつ詳細に解説します。PostgreSQL用クラスタリング/レプリケーションソフト、PostgreSQL⇔Oracle移行、PostgreSQLによる大規模サイト構築法、新バージョンPostgreSQL 8.0先行レビュー、PostgreSQL用.NETデータプロバイダ等々、他では読めない貴重な記事が満載です。

発売日:2004/12/08発売
定価:\1,890(本体 \1,800+税)
奥畑 裕樹(OKUHATA, Hiroki)
著者プロフィール
奥畑 裕樹(OKUHATA, Hiroki)
Javaとオープンソース技術を得意とする技術コンサルタント。最近のテーマは、ソフトウェア開発の全体最適をはかること。気が付けば、10才のときにプログラミングを始めて以来、常に何かを作っている…。


INDEX
第2回:データの移行(1)
PostgreSQLからOracleへのデータ移行
  Ora2Pgのインストール