OracleのData Pump(impdp)は、高速かつ柔軟なデータインポート機能を提供します。一般的にダンプファイル全体をインポートする用途で使われますが、実際の運用では「一部のテーブルだけ」「条件に一致するデータのみ」を復元したいケースも多くあります。
本記事では、表単位・WHERE句による条件付きの部分インポート方法を、実行例付きでわかりやすく解説します。
前提:Data Pumpダンプファイルの準備
以下のようなData Pumpのダンプファイル(expdpによって作成済)があることを前提とします。
expdp scott/tiger tables=emp,dept directory=DATA_PUMP_DIR dumpfile=partial.dmp logfile=partial_exp.log
このように、複数テーブルをエクスポートしたファイルから、目的のテーブルやデータだけをインポートする方法を紹介します。
表単位でインポートする方法
特定のテーブルだけをインポートしたい場合は、TABLES
パラメータを指定します。
impdp scott/tiger tables=emp directory=DATA_PUMP_DIR dumpfile=partial.dmp logfile=emp_imp.log
これにより、ダンプファイルに含まれる emp
テーブルのみが復元されます。
複数テーブルを指定する場合
カンマ区切りで複数のテーブルを指定できます。
impdp scott/tiger tables=emp,dept directory=DATA_PUMP_DIR dumpfile=partial.dmp logfile=multi_imp.log
WHERE句による条件付きインポート(QUERYパラメータ)
Data Pumpでは、QUERYパラメータを使用することで、テーブルの一部のデータのみをインポートすることが可能です。
impdp scott/tiger tables=emp directory=DATA_PUMP_DIR dumpfile=partial.dmp logfile=query_imp.log \
query="WHERE deptno = 10"
この例では、empテーブルの中でもdeptno=10
の行だけがインポートされます。
注意点:
- QUERY句はSQLのWHERE句として機能します(FROM句不要)
- テーブルごとに異なるQUERYを使いたい場合は、パラメータファイルの使用が推奨されます
パラメータファイルを使った柔軟な指定
複雑な条件や長いコマンドを扱う場合は、パラメータファイル(.par)を使うと便利です。
query_emp.par
directory=DATA_PUMP_DIR
dumpfile=partial.dmp
logfile=query_emp.log
tables=emp
query="WHERE deptno IN (10, 20)"
実行方法:
impdp scott/tiger parfile=query_emp.par
存在するテーブルにデータだけをインポート(content=data_only)
すでにテーブル構造がある場合は、データだけをインポートすることも可能です。
impdp scott/tiger tables=emp directory=DATA_PUMP_DIR dumpfile=partial.dmp logfile=dataonly.log content=data_only
この方法は、スキーマ構造を変更せずにデータだけを復元したいときに有効です。
まとめ
Oracle Data Pumpのimpdp
は、柔軟に一部だけを復元できる非常に強力なツールです。
- tables:特定のテーブルだけを対象にインポート
- query:WHERE句で条件を指定し、必要なデータだけを復元
- content=data_only:データのみをインポート(既存テーブル向け)
本番環境や検証用の部分復元にぜひ活用して、効率的なデータ管理を実現しましょう。