OracleのEXPDPでの条件指定(QUERY)の使い方

OracleのEXPDPでの条件指定(QUERY)の使い方

 

OracleのDataPumpインポート/エクスポートは、
大量データを保存/再設定する時に非常に便利です。
パラメータの指定もさほど難しくなく、パラメータファイルとして残しておけば使いまわししやすいのも助かりますね。

 

そんなDataPumpですが、エクスポート時は細かい条件指定が可能です。
WHERE句で指定してできるため、レコード単位で条件が指定できます。

この場合の構文について、検索で調べてもなかなか出てこないことが多く、自分自身も困ることが多いため備忘として残しておきます。

 

1.QUERYパラメータ

expdpのパラメータにQUERY句を追加することで条件を指定することができます。

QUERY=scott.emp1:"WHERE CREATE_DATE >= TO_DATE('20180930','YYYY/MM/DD')"

また、テーブル名を指定していることからも分かる通り、テーブルごとに違う条件を指定することが可能です。

QUERY=scott.emp1:"WHERE CREATE_DATE >= TO_DATE('20180930','YYYY/MM/DD')"
     ,scott.emp2:"WHERE UPDATE_DATE >= TO_DATE('20180930','YYYY/MM/DD')"

emp1テーブルは作成日で抽出、emp2テーブルは更新日で抽出ということも可能です。

 

2.注意点

DataPumpのエクスポートはその速さが最大の魅力ですが、QUERYで条件を指定すると抽出にかかる時間は延びます。
メンテナンス等の時間の限られた場面でいきなり使うことは避けましょう。
あらかじめどの程度時間がかかるのか計測する。
また、ディスクの空き容量に余裕があるのであれば条件指定なしで抽出することも検討すべきです。