利用資料泵匯出查詢結果(一)
在ITPUB上看到有人提出這個問題,能否利用資料泵匯出一個查詢結果。事實上資料泵還真的具有這個功能。
原貼參考:http://www.itpub.net/thread-1313169-1-1.html
這一篇介紹資料泵的QUERY功能。
建立一個簡單的測試環境:
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
比如上述的查詢結果就可以透過資料泵的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: Release 10.2.0.3.0 - 64bit Production on 星期日, 13 6月, 2010 19:52:28
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.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
這種方法比較簡單,但是最大的缺點就是限制條件太嚴格,尤其是所有欄位完全來自都一張表,大多數情況都無法滿足這個條件。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-665302/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用資料泵匯出查詢結果(二)
- navicat 匯出查詢結果
- mysql匯出查詢結果MySql
- MySQL查詢結果匯出方式總結MySql
- DBeaver 匯出多個查詢結果集
- 使用navicat匯出查詢大量資料結果集並匯入到其他資料庫(mysql)資料庫MySql
- 資料泵取匯出和匯入(一)
- 資料泵匯出匯入
- 資料泵的匯入匯出
- 資料泵匯出匯入表
- 【ASH】如何匯出檢視DBA_HIST_ACTIVE_SESS_HISTORY的查詢結果資料
- 極兔快遞怎麼查詢物流資訊 支援匯出查詢結果嗎?
- Oracle資料泵-schema匯入匯出Oracle
- MySQL 將查詢結果匯出到檔案MySql
- 資料泵匯出匯入資料標準文件
- 【資料泵】EXPDP匯出表結構(真實案例)
- Oracle資料泵的匯入和匯出Oracle
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- Oracle使用資料泵匯出匯入表Oracle
- 資料庫泵(expdp/impdp)匯入匯出流程資料庫
- UPDATE查詢結果範圍內的資料
- 使用資料泵工具expdp工具匯出資料
- 資料泵匯出資料包錯處理
- Oracle expdp資料泵遠端匯出Oracle
- 使用資料泵匯出DDL語句
- 轉oracle資料泵匯出時報錯Oracle
- 10g資料泵和匯入匯出效能對比(一)
- 12c 資料泵匯入匯出級別
- Oracle10g 資料泵匯出命令impdp 使用總結Oracle
- Oracle10g 資料泵匯出命令 expdp 使用總結Oracle
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- 如何分頁顯示資料庫查詢結果?資料庫
- C# dataGridView展示資料庫查詢結果C#View資料庫
- 資料泵避免個別表資料的匯出
- 資料泵匯出索引資料和統計資訊嗎索引
- 12c 資料泵一致性匯出
- mybatis查詢mysql 資料庫中 BLOB欄位,結果出現亂碼MyBatisMySql資料庫
- SQL查詢結果集對注入的影響及利用SQL