【Oracle】Data Pumpで部分的にインポートする方法|表単位・条件付きの復元

【Oracle】Data Pumpで部分的にインポートする方法|表単位・条件付きの復元 Oracle

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:データのみをインポート(既存テーブル向け)

本番環境や検証用の部分復元にぜひ活用して、効率的なデータ管理を実現しましょう。