デフォルト: デフォルト値は設定されていません。
用途
構文および説明
QUERY = [schema.][table_name:] query_clause
通常、query_clause
では、ファイングレイン行選択のためのSQL WHERE
句を使用しますが、任意のSQL句を使用できます。たとえば、ORDER
BY
句を使用すると、ヒープ構成表から索引構成表への移行を高速化できます。スキーマおよび表名を指定しなかった場合は、エクスポート・ジョブ内のすべての表に問合せが適用されます(この場合、問合せは、これらのすべての表に対して有効である必要があります)。表固有の問合せは、すべての表に適用される問合せより優先されます。
特定の表に問合せを適用する場合は、表名と問合せ句をコロンで区切る必要があります。表固有の問合せは複数指定できますが、1つの表に指定できるのは1つの問合せのみです。
QUERY
パラメータと一緒にNETWORK_LINK
パラメータを指定する場合、リモート(ソース)ノード上にあるquery_clause
で指定されるすべてのオブジェクトは、NETWORK_LINK
値で明示的に修飾する必要があります。それ以外の場合、データ・ポンプではオブジェクトがローカル(ターゲット)ノード上に存在することを前提とし、存在しない場合はエラーが返され、リモート(ソース)システムからの表のインポートは失敗します。
たとえば、NETWORK_LINK=dblink1
と指定した場合、QUERY
パラメータのquery_clause
は、次の例に示すようにそのリンクを指定する必要があります。
QUERY=(hr.employees:"WHERE last_name IN(SELECT last_name FROM hr.employees@dblink1)")
オペレーティング・システムによっては、このパラメータの値を指定するときに引用符とともにエスケープ文字を使用する必要があります。このパラメータはパラメータ・ファイルで指定することをお薦めします。パラメータ・ファイルを使用すると、コマンドラインでは必要なエスケープ文字の数を減らすことができます。詳細は、「データ・ポンプ・コマンドラインでの引用符の使用」を参照してください。
表固有の問合せで自分のスキーマ以外のスキーマを指定するには、その特定の表に対するアクセス権限が付与されている必要があります。
制限事項
QUERY
パラメータは次のパラメータとは併用できません。
CONTENT=METADATA_ONLY
ESTIMATE_ONLY
TRANSPORT_TABLESPACES
表にQUERY
パラメータが指定されている場合、データ・ポンプは外部表を使用してターゲット表をアンロードします。外部表は、SQL CREATE TABLE AS SELECT
文を使用します。QUERY
パラメータの値は、CREATE TABLE
文のSELECT
部分にあるWHERE
句です。QUERY
パラメータにアンロードする表と一致する名前の列がある他の表への参照が含まれていて、これらの列が問合せで使用される場合は、表別名を使用して、アンロードする表内の列と、SELECT
文内の同じ名前を持つ列を区別する必要があります。アンロードする表に対してデータ・ポンプで使用される表別名は、KU$
です。
たとえば、sh.customers
表にある顧客のクレジットの上限に基づいてsh.sales
表のサブセットをエクスポートするとします。次の例では、KU$
を使用して、sh.sales
をアンロードするためにQUERY
パラメータ内のcust_id
フィールドを修飾します。この結果、データ・ポンプによって、クレジットの上限が$10,000を超える顧客の行のみがエクスポートされます。
QUERY='sales:"WHERE EXISTS (SELECT cust_id FROM customers c WHERE cust_credit_limit > 10000 AND ku$.cust_id = c.cust_id)"'
次の問合せのように、表別名としてKU$
を使用しないと、すべての行がアンロードされることになります。
QUERY='sales:"WHERE EXISTS (SELECT cust_id FROM customers c WHERE cust_credit_limit > 10000 AND cust_id = c.cust_id)"'
QUERY
に使用できる文字列の最大長は、引用符を含めて4000バイトです。つまり、許容される実際の最大長は3998バイトです。
例
次に、QUERY
パラメータの使用例を示します。
> expdp hr PARFILE=emp_query.par
emp_query.parファイルの内容は次のとおりです。
QUERY=employees:"WHERE department_id > 10 AND salary > 10000" NOLOGFILE=YES DIRECTORY=dpump_dir1 DUMPFILE=exp1.dmp
この例では、hr
スキーマのすべての表がアンロードされます。ただし、アンロードされるのは、問合せ式に適合する行のみです。この場合、hr
スキーマ内のすべての表(employees
を除く)のすべての行がアンロードされます。employees
表に対しては、問合せ基準を満たす行のみがアンロードされます。