PostgreSQLとOracleによるデータベース相互移行マニュアル 2

データの移行(1)

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

奥畑 裕樹

2005年10月18日 20:00

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

   コマンドが成功すれば、データ移行は完了です。

 

 

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のデータ型変換表

 

 

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る