第2回:データの移行(1) (1/2)

まるごと 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)
LONGTEXT
CLOBTEXT
数値型
NUMBERNUMERIC
FLOATFLOAT8
日付型
DATETIMESTAMP
バイナリ型
RAW(n)TEXT
LONG RAWTEXT
BLOBTEXT
BFILETEXT
その他
ROWIDOID

表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のインストール
PostgreSQLとOracleによるデータベース相互移行マニュアル
第1回データベース移行
第2回データの移行(1)
第3回データの移行(2)
第4回SQL文の移行(1)
第5回SQL文の移行(2)
第6回SSQL文の移行(3)
第7回ファンクションの移行(1)
第8回ファンクションの移行(2)
第9回ストアドプロシージャの移行(1)
第10回ストアドプロシージャの移行(2)
第11回ストアドプロシージャの移行(3)
第12回ストアドプロシージャの移行(4)
第13回まとめ

人気記事トップ10

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

企画広告も役立つ情報バッチリ! Sponsored