データの移行(2)

データの書き出し   前回に続き、データを書き出します。先ほどのプログラムをリスト2のように変更して実行します。 #!/usr/bin/perl

奥畑 裕樹

2005年10月20日 20:00

データの書き出し

   前回に続き、データを書き出します。先ほどのプログラムをリスト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の文字コードに対応したテキストエディタなどで開いてください。
data.sqlの中身

図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のようなプログラムを作成するとよいでしょう。
JDBCによるBLOBデータ移行例

リスト3:JDBCによるBLOBデータ移行例
(画像をクリックすると別ウィンドウに拡大表示します)

人気記事トップ10

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

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

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30