外部表・SQL*Loader・Data Pumpの違いとは?~用途別に使い分けを解説~

Datapump

Oracle Databaseでデータの取り込みや外部ファイル参照を行う方法として、以下の3つの代表的な機能があります。

  • 外部表(External Table)
  • SQL*Loader
  • Data Pump(impdp / expdp

それぞれ役割や特徴が異なるため、用途に応じた使い分けが重要です。
本記事では、違いや使い分け方を丁寧に解説します。


🔸 それぞれの概要

機能名概要
外部表外部ファイル(CSV等)を読み取り専用でSQL参照できる仮想テーブル
SQL*LoaderCSV等のファイルをOracleの表にロードするためのツール
Data PumpOracle独自のバイナリ形式でエクスポート/インポートを行う高速ツール

🔸 比較表:外部表 vs SQL*Loader vs Data Pump

比較項目外部表(External Table)SQL*LoaderData Pump(expdp/impdp)
対象ファイル形式CSV、固定長など(テキスト)CSV、固定長、TSVなどOracle独自のDMPファイル形式
処理の目的SQLで参照(読み取り専用)Oracle表へのデータ取り込みDBオブジェクトの論理的な移送
書き込み可否❌ 読み取り専用✅ INSERT可能✅ テーブル/スキーマ単位で取り込み
ログ・エラー出力自動生成(*.log, *.badなど)自動生成(*.log, *.badなど)自動生成(ログあり)
トランザクション対応❌ 非対応(SQL*Loaderベース)❌ 非対応✅ COMMIT単位で管理可能
並列処理・パフォーマンス△ 遅い(都度ファイル読み込み)○ 多量データでもまずまず◎ 並列処理・圧縮・高速対応
主な用途内容確認・集計・突合せなどデータベースへの初期ロードなどバックアップや本番環境移送
ライセンスEE/SE2共通(基本機能)EE/SE2共通(基本機能)EE/SE2共通(基本機能)

🔸 外部表(External Table)の特徴と向いている場面

✅ 特徴

  • CSVなどを直接SQLで読み取れる
  • 表ではなく、ファイルを参照する仮想的な構造
  • Oracleサーバー上のファイルにアクセスする
  • 書き込み不可、読み取り専用

✅ 向いている場面

  • 業務委託先から受け取ったCSVをSQLで検証したい
  • 簡易的にCSVをJOINしたい
  • ロードせず、集計・突合せしたい

🔸 SQL*Loaderの特徴と向いている場面

✅ 特徴

  • CSVや固定長ファイルをOracle表に取り込む専用ツール
  • コントロールファイルで項目定義が必要
  • 複雑なマッピングやフィールド制御も可能

✅ 向いている場面

  • 定型的にCSVをOracleに定期ロードする処理
  • ファイル単位で大量の初期データを登録したい
  • 項目整形や無視・変換ルールを柔軟に設定したい

🔸 Data Pumpの特徴と向いている場面

✅ 特徴

  • Oracle独自のバイナリ形式(.dmp)で高速にデータ移送
  • 論理バックアップ・リストアに利用される
  • 並列処理、圧縮、リモート接続などに対応

✅ 向いている場面

  • テーブル単位・スキーマ単位で本番→開発環境へデータ移送
  • データベースの論理バックアップ
  • 特定条件のWHERE句エクスポート/インポート

🔸 実務における使い分けの目安

利用目的推奨機能
一時的にCSVを参照したい外部表
大量のCSVをテーブルにロードしたいSQL*Loader
テーブルやスキーマを丸ごと移行したいData Pump
バッチ出力されたCSVと突合せしたい外部表
既存テーブルへの差分取り込みSQL*Loader
Oracle間で環境間移送(高速)Data Pump

🔸 各機能のコマンド例(概要)

外部表(ext_user接続)

SELECT * FROM ext_emp;

SQL*Loader(コマンドライン)

sqlldr userid=hr/password control=emp.ctl log=emp.log

Data Pump(インポート)

impdp hr/password DIRECTORY=dp_dir DUMPFILE=emp.dmp LOGFILE=imp.log

🔸 まとめ

ポイント内容
外部表はSQLで直接参照したいときに便利書き込み不可だが軽量で柔軟
SQL*LoaderはCSVからのロード処理に特化表に格納する用途でシンプル・高速
Data Pumpは環境間移行やバックアップに最適スキーマ/テーブル単位での完全な論理移送、圧縮・並列も可能


[参考]
Oracle Database データベース概要 19c

コメント

タイトルとURLをコピーしました