Oracle中利用資料泵匯出查詢結果(一) 資料泵的QUERY功能

來源:互聯網
上載者:User

在ITPUB上看到有人提出這個問題,能否利用資料泵匯出一個查詢結果。事實上資料泵還真的具有這個功能。

建立一個簡單的測試環境:

SQL> CREATE TABLE T1

2  (ID NUMBER, NAME VARCHAR2(30));

Table created.

SQL> INSERT INTO T1

2  SELECT ROWNUM, TNAME

3  FROM TAB;

66 rows created.

SQL> CREATE TABLE T2

2  (ID NUMBER, NAME VARCHAR2(30));

Table created.

SQL> INSERT INTO T2

2  VALUES (1, 'A');

1 row created.

SQL> INSERT INTO T2

2  VALUES (2, 'B');

1 row created.

SQL> COMMIT;

Commit complete.

如果要匯出T1和T2的查詢結果,且滿足兩個條件,就可以考慮使用資料泵的QUERY功能。

第一個條件是查詢的全部欄位都來自同一張表;

第二個條件是其他表關聯當前表欄位是唯一的,換句話說,就是當前表和其他表關聯後不會產生重複的記錄。

SQL> SELECT T1.* FROM T1, T2

2  WHERE T1.ID = T2.ID;

ID NAME

---------- ------------------------------

1 CP_TEST_T

2 CELL

本欄目更多精彩內容:http://www.bianceng.cn/database/Oracle/

比如上述的查詢結果就可以通過資料泵的QUERY參數來實現,首先對查詢變形,變成IN或EXISTS的形式:

SQL> SELECT * FROM T1

2  WHERE ID IN

3  (SELECT T2.ID FROM T2 WHERE T2.ID = T1.ID);

ID NAME

---------- ------------------------------

1 CP_TEST_T

2 CELL

下面就可以進行匯出了:

[oracle@yans1 ~]$ expdp test/test dumpfile=d_output:t1.dp tables=t1 query='T1:"WHERE ID IN (SELECT ID FROM T2 WHERE T2.ID = ID)"'

Export: Release10.2.0.3.0 - 64bit Production on星期日, 13 6月, 2010 19:52:28

Copyright (c) 2003, 2005, Oracle.  All rights reserved.

Connected to: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

Starting "TEST"."SYS_EXPORT_TABLE_01":  test/******** dumpfile=d_output:t1.dp tables=t1 query=T1:"WHERE ID IN (SELECT ID FROM T2 WHERE T2.ID = ID)"

Estimate in progress using BLOCKS method...

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 128 KB

Processing object type TABLE_EXPORT/TABLE/TABLE

. . exported "TEST"."T1"                                 5.234 KB       2 rows

Master table "TEST"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

******************************************************************************

Dump file set for TEST.SYS_EXPORT_TABLE_01 is:

/home/oracle/t1.dp

Job "TEST"."SYS_EXPORT_TABLE_01" successfully completed at 19:52:32

這種方法比較簡單,但是最大的缺點就是限制條件太嚴格,尤其是所有欄位完全來自都一張表,大多數情況都無法滿足這個條件。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.