【Oracle】impdpでデータだけをインポートする方法|content=data_onlyの使い方

【Oracle】impdpでデータだけをインポートする方法|content=data_onlyの使い方 Oracle

OracleのData Pump Import(impdp)を使ってデータを復元する際、「テーブルの構造はそのままにして、データだけをインポートしたい」というケースがあります。そのようなときに便利なのが、content=data_only パラメータです。本記事では、このオプションの基本的な使い方と、実務での活用方法を紹介します。

content=data_onlyとは?

content パラメータは、Data Pumpでインポートまたはエクスポートする内容を指定するためのものです。impdpcontent=data_onlyを指定すると、テーブル定義やインデックス、制約などのオブジェクトは無視され、データのみがインポートされます。

基本構文

impdp ユーザー名/パスワード directory=ディレクトリ名 dumpfile=ダンプファイル名.dmp logfile=ログファイル名.log tables=テーブル名 content=data_only

使用例:EMPテーブルにデータだけをインポート

impdp scott/tiger directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp logfile=imp_emp.log tables=emp content=data_only

このコマンドでは、既に存在するEMPテーブルに対して、ダンプファイル内のデータだけをインポートします。

既存テーブルがある場合の挙動と組み合わせ

データのみをインポートする場合、既存のテーブルにどうデータを適用するかを制御するために、table_exists_action を併用することが重要です。

オプション 動作内容
SKIP 既存テーブルがあればスキップ(デフォルト)
APPEND 既存データに追加でインポート
TRUNCATE 既存データを削除してからインポート

例:データを追加で挿入する場合

impdp scott/tiger directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp logfile=imp_emp.log tables=emp content=data_only table_exists_action=append

例:既存データを一度削除してからインポートする場合

impdp scott/tiger directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp logfile=imp_emp.log tables=emp content=data_only table_exists_action=truncate

注意点

  • 対象テーブルが存在していないと失敗します(content=data_onlyはデータのみなので、テーブル定義はインポートされません)
  • 制約やインデックスなどは復元されません(必要に応じて別途content=metadata_onlyで定義だけをインポートする)
  • 主キーや一意制約がある場合、appendで重複エラーになる可能性があるため注意

よくある活用シーン

  • 開発・テスト環境へ最新データだけを反映したいとき
  • 構造はそのままでデータのみ更新したいとき
  • データ不整合が起きた際の一時的な復旧処理

まとめ

impdpcontent=data_onlyオプションを使えば、既存のテーブル構造を保持したまま、データだけを柔軟にインポートすることができます。table_exists_actionとの併用により、運用目的に応じた安全なリストアが可能となります。

データ移行や検証用途において、効率的かつ確実な操作を行うために、ぜひ活用してみてください。