Ora2Pgを使ってOracleからPostgresqlへ定義、データを丸ごと移動する
2016/01/05
Oracle上にあるデータベースをPostgresqlに復元して、pgAdminとかでもっと気軽にダンプしたりリストアしたかったのでOra2Pgを使ってみた。
Ora2Pgのインストール手順
perlのインストール
http://www.activestate.com/activeperl
必要なモジュールインストール
Perl Package Managerで下記を検索しインストール
- DBI
- DBD-Pg
- DBD-Oracle
- String-Random
- Compress-Zlib
- Ora2Pgのダウンロード
http://ora2pg.darold.net/install.html
フォルダを展開して任意の場所に配置し、コマンドプロンプトで下記実行
perl Makefile.PL dmake && dmake install
※MinGW64を入れろと途中で起こられたので、Perl Package Managerで同じくインストール
実行
下記のようなperlスクリプトを作成し実行
perl パールスクリプトファイル名 ora2pg_dist.conf
BEGIN {
# Oracleデータベースのインストール先
$ENV{ORACLE_HOME}='O:\product\10.2.0\db_1';
}
use strict;
use Ora2Pg;
my $schema=new Ora2Pg (
debug=>1,
export_schema=>1,
# host=OracleのIPアドレス
datasource=>'dbi:Oracle:host=IPアドレス;sid=SID;port=1521',
# ユーザ名
user=>'',
# パスワード
password=>'',
# エクスポートする内容を記述
# TABLE:テーブル定義、VIEW:VIEW定義、COPY:COPYコマンドでインポートできる形式でデータ出力、DATA:INSERT文でデータエクスポート
type=>'',
# oracleのencode
nls_lang=>'JAPANESE_JAPAN.JA16EUC',
# Postgresqlのencode
client_encoding=>'EUC_JP',
# Oracleのどのスキーマを出力するか
schema=>'',
# 出力したスキーマを強制的に変更
# Oracleでaaaというスキーマを出力し、Postgresqlのpublicスキーマに入れたい場合
# schema=>'aaa'、pg_schema=>'public'
pg_schema=>''
);
$schema->export_schema('C:\hoge.sql');
exit(0);
