OracleダンプからPostgreSQLへ移行する手順ガイド
blog.publishedAt: 2026년 4월 4일
oraclepostgresqlmigrationexport
Oracle から PostgreSQL への移行プロジェクトでは、既存の .dmp ファイルからデータを取り出して PostgreSQL に取り込む作業が発生します。
本記事では、Oracle 環境を使わずに .dmp ファイルから PostgreSQL 互換の SQL を生成し、インポートする手順を解説します。
移行の全体像
.dmp ファイル → OraDB DUMP Viewer → PostgreSQL 用 SQL → psql でインポート
Oracle のインストールは不要です。必要なのは:
- OraDB DUMP Viewer(Windows)
- PostgreSQL 環境(移行先)
ステップ1: ダンプファイルの内容を確認
- OraDB DUMP Viewer で .dmp ファイルを開く
- スキーマツリーでテーブル一覧を確認
- 各テーブルのデータ量・カラム構造・データ型を把握
この段階で移行対象のテーブルを選定し、除外テーブルがあれば設定しておきます。
ステップ2: PostgreSQL 用 SQL をエクスポート
単一テーブルの場合
- テーブルを選択してエクスポート → SQLを選択
- 対象データベースで PostgreSQL を選択
- 保存先を指定して実行
複数テーブルの一括エクスポート
- メニューからバッチエクスポートを選択
- 移行対象テーブルにチェック
- 出力形式で SQL(PostgreSQL)を選択
- 出力先フォルダを指定して実行
PostgreSQL 構文に合わせた CREATE TABLE 文と INSERT 文が生成されます。
ステップ3: データ型のマッピング
OraDB DUMP Viewer は自動でデータ型を変換しますが、主要なマッピングを把握しておくと安心です。
| Oracle | PostgreSQL | 備考 |
|---|---|---|
| NUMBER(p,s) | NUMERIC(p,s) | 精度・スケールを保持 |
| VARCHAR2(n) | VARCHAR(n) | そのまま |
| CHAR(n) | CHAR(n) | そのまま |
| DATE | TIMESTAMP | Oracle DATE は時刻を含む |
| TIMESTAMP | TIMESTAMP | そのまま |
| CLOB | TEXT | PostgreSQL の TEXT は無制限長 |
| BLOB | BYTEA | バイナリデータ |
| BINARY_FLOAT | REAL | 4バイト浮動小数点 |
| BINARY_DOUBLE | DOUBLE PRECISION | 8バイト浮動小数点 |
ステップ4: PostgreSQL にインポート
# データベースを作成
createdb mydb
# SQL ファイルをインポート
psql -d mydb -f exported_table.sql
# 複数ファイルの一括インポート
for f in /path/to/sql/*.sql; do
psql -d mydb -f "$f"
done
ステップ5: 移行後の確認
- テーブル数の一致確認:
SELECT count(*) FROM information_schema.tables WHERE table_schema = 'public'; - 行数の一致確認: 各テーブルの
SELECT count(*)を OraDB DUMP Viewer の表示と比較 - データ型の確認:
d tablenameでカラム定義を確認
LOB データの移行
BLOB/CLOB を含むテーブルは注意が必要です:
- CLOB → TEXT: SQL エクスポートで自動変換されます
- BLOB → ファイル: LOB 抽出機能でファイルとして取り出し、アプリケーション側で取り込む方法が確実です
CSV 経由での移行(代替手段)
SQL エクスポートの代わりに CSV 経由で移行することも可能です。
# OraDB DUMP Viewer で CSV 出力後
psql -d mydb -c "\COPY tablename FROM '/path/to/table.csv' WITH (FORMAT csv, HEADER true)"
大量データの場合は CSV + COPY コマンドの方が INSERT 文より高速です。
まとめ
OraDB DUMP Viewer を使えば、Oracle 環境なしに .dmp ファイルから PostgreSQL 互換の SQL や CSV を生成できます。データ型の自動変換により、手動でのスクリプト修正を最小限に抑えられます。