OracleのData Pump Import(impdp
)を使ってデータを復元する際、「テーブルの構造はそのままにして、データだけをインポートしたい」というケースがあります。そのようなときに便利なのが、content=data_only
パラメータです。本記事では、このオプションの基本的な使い方と、実務での活用方法を紹介します。
content=data_onlyとは?
content
パラメータは、Data Pumpでインポートまたはエクスポートする内容を指定するためのものです。impdp
でcontent=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
で重複エラーになる可能性があるため注意
よくある活用シーン
- 開発・テスト環境へ最新データだけを反映したいとき
- 構造はそのままでデータのみ更新したいとき
- データ不整合が起きた際の一時的な復旧処理
まとめ
impdp
のcontent=data_only
オプションを使えば、既存のテーブル構造を保持したまま、データだけを柔軟にインポートすることができます。table_exists_action
との併用により、運用目的に応じた安全なリストアが可能となります。
データ移行や検証用途において、効率的かつ確実な操作を行うために、ぜひ活用してみてください。