|
|
1 2 次のページ
|
|
データの書き出し
|
前回に続き、データを書き出します。先ほどのプログラムをリスト2のように変更して実行します。
|
#!/usr/bin/perl
BEGIN {
$ENV{ORACLE_HOME} = 'C:/Oracle10g/orahome';
$ENV{NLS_LANG} = 'japanese_japan.JA16EUC';
}
use strict;
use Ora2Pg;
my $data = new Ora2Pg (
datasource => 'dbi:Oracle:host= ⇒
localhost;sid=ORA10',
user => 'tsukaeru',
password => 'sql',
schema => 'TSUKAERU',
type => 'DATA',
debug => 1
);
$data->export_data('data.sql');
exit(0);
|
リスト2:export_data.pl
|
すると、図3のようなファイルが出力されます。同じく、EUCの文字コードに対応したテキストエディタなどで開いてください。
|
図3:data.sqlの中身 (画像をクリックすると別ウィンドウに拡大表示します)
|
このデータをPostgreSQLに投入するには、psqlコマンドを使って次のように実行します。
|
% psql tsukaeru < data.sql
|
|
コマンドが成功すれば、データ移行は完了です。
|
Ora2Pgの注意点
|
テーブル名や列名が日本語の場合には、エクスポートが失敗する場合があります。NLS_LANG環境変数を正しく設定しても失敗する場合は、RENAME文やALTER TABLE文を使って、あらかじめテーブル名や列名を英語名に変えておくとよいでしょう。データをエクスポートした後に、日本語の名前に戻せばOKです。
Ora2Pgは、スキーマの出力時にはテーブルの制約関係をPostgreSQL用に変換してくれますが、データの出力時にはその制約を満たす順序ではINSERT文を作成してくれません。そのため、制約がある場合には、必要に応じて投入前にINSERT文の順番を入れ替えてください。もしくは制約を外して投入し、後から付けてもよいでしょう。
また表3にありますように、Ora2PgはOracleのRAWデータ型やBLOBデータ型などを、すべてPostgreSQLのTEXT型に移行します。これをPostgreSQLのbytea型に移行したいときは、JDBCなどでリスト3のようなプログラムを作成するとよいでしょう。
|
リスト3:JDBCによるBLOBデータ移行例 (画像をクリックすると別ウィンドウに拡大表示します)
|
1 2 次のページ
|
書籍紹介 まるごと 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)
Javaとオープンソース技術を得意とする技術コンサルタント。最近のテーマは、ソフトウェア開発の全体最適をはかること。気が付けば、10才のときにプログラミングを始めて以来、常に何かを作っている…。
|
|
|
|