Exp和資料泵(Data Pump)的query引數使用
Oracle提供了邏輯備份和物理備份兩種備份手段。早期的Exp/Imp和10g之後的Data Pump都是實現邏輯備份的重要方式。藉助兩個邏輯備份工具,我們可以方便的對資料庫進行多角度、多維度的備份還原操作。
在資料表資料選擇層面,query引數可以針對匯出的資料表新增where條件。只有滿足query條件的資料記錄才能匯出。這個特性在實際中是非常有用的。比如:我們在進行大規模測試的之前,可能需要先匯出一小部分資料進行試驗。或者恰恰需要匯出滿足條件的記錄資料。
在使用query引數的時候,需要一些注意的問題。本文主要介紹在命令列(command line)和引數檔案(parameter file)中的使用細節。
1、環境介紹
我們選擇使用Oracle 11g進行實驗。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 – Production
使用Oracle Data Pump需要建立directory目錄。
SQL> col directory_path for a20;
SQL> select directory_name, directory_path from dba_directories where directory_name='DMPDIR';
DIRECTORY_NAME DIRECTORY_PATH
------------------------------ --------------------
DMPDIR /upload
Query引數的官方說明。
QUERY
Predicate clause used to export a subset of a table.
For example, QUERY=employees:"WHERE department_id > 10".
2、命令列資料匯出
在命令列匯出過程中,三種匯出模式(Schema、Tables和Full)都可以使用query引數。無論匯出的資料表有多少,如果設定query條件,指定query的資料表就需要將滿足條件的資料匯出。
[oracle@bspdev10g upload]$ expdp userid=\"/ as sysdba\" directory=dmpdir dumpfile=scott_inin.dmp logfile=scott_inin.log tables=scott.inin query=scott.inin:\" where rownum\<10 \"
Export: Release 10.2.0.1.0 - Production on Saturday, 15 December, 2012 14:59:08
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SYS"."SYS_EXPORT_TABLE_01": userid="/******** AS SYSDBA" directory=dmpdir dumpfile=scott_inin.dmp logfile=scott_inin.log tables=scott.inin query=scott.inin:" where rownum<10 "
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."ININ" 6.773 KB 9 rows
Master table "SYS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_TABLE_01 is:
/upload/scott_inin.dmp
Job "SYS"."SYS_EXPORT_TABLE_01" successfully completed at 14:59:19
在匯出表模式的時候,我們可以將資料表在query中指定出來。如果資料表匯出的只有一個,query中的資料表名稱可以省略。
[oracle@bspdev10g upload]$ expdp userid=\"/ as sysdba\" directory=dmpdir dumpfile=scott_inin.dmp logfile=scott_inin.log tables=scott.inin query=\" where rownum\<10 \"
Export: Release 10.2.0.1.0 - Production on Saturday, 15 December, 2012 15:00:24
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SYS"."SYS_EXPORT_TABLE_01": userid="/******** AS SYSDBA" directory=dmpdir dumpfile=scott_inin.dmp logfile=scott_inin.log tables=scott.inin query=" where rownum<10 "
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."ININ" 6.773 KB 9 rows
Master table "SYS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_TABLE_01 is:
/upload/scott_inin.dmp
Job "SYS"."SYS_EXPORT_TABLE_01" successfully completed at 15:00:34
Schema模式匯出物件的時候,query字句也是可以使用的。注意:query沒有指定的資料表也是可以匯出的,而且是無條件的匯出。
[oracle@bspdev10g upload]$ expdp userid=\"/ as sysdba\" directory=dmpdir dumpfile=scott_inin.dmp logfile=scott_inin.log schemas=scott query=scott.emp:\" where rownum\<10 \",scott.dept:\" where rownum\<10 \"
Export: Release 10.2.0.1.0 - Production on Saturday, 15 December, 2012 15:02:01
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SYS"."SYS_EXPORT_SCHEMA_01": userid="/******** AS SYSDBA" directory=dmpdir dumpfile=scott_inin.dmp logfile=scott_inin.log schemas=scott query=scott.emp:" where rownum<10 ",scott.dept:" where rownum<10 "
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 256 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."DEPT" 5.656 KB 4 rows
. . exported "SCOTT"."EMP" 7.625 KB 9 rows
. . exported "SCOTT"."ININ" 34.98 KB 760 rows
. . exported "SCOTT"."SALGRADE" 5.585 KB 5 rows
. . exported "SCOTT"."BONUS" 0 KB 0 rows
Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:
/upload/scott_inin.dmp
Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 15:02:15
注意上面的細節:我們雖然設定的是schema匯出模式,但是在query中設定條件的資料表,的確是按照條件型別進行匯出。
最後,我們需要關注command line匯出方式的一個重要要求,就是跳脫字元。在userid和query引數中,我們都可以看到跳脫字元的蹤跡。在命令列方式下,我們需要對引號、大小比較符進行轉移處理。很多時候,這樣的命令和官方提示中存在一些差異,需要我們額外關注。
3、引數檔案使用
當我們匯出的條件很複雜、引數很多的時候,命令列引數不是什麼很方便的選擇。我們可以使用引數檔案parameter file方法。藉助parfile引數,我們可以將匯出引數組織成一個文字格式檔案。
[oracle@bspdev10g upload]$ ls -l
total 4
-rw-r--r-- 1 oracle oinstall 142 Dec 15 15:08 expdp_q.par
[oracle@bspdev10g upload]$ cat expdp_q.par
directory=dmpdir
dumpfile=exp_scott.dmp
logfile=exp_scott.log
schemas=scott
query=scott.emp:"where rownum<10 ", scott.inin:"where rownum<10"
在目錄中,我們可以定義引數檔案,其中包括了各個引數取值。執行匯出命令:
[oracle@bspdev10g upload]$ expdp userid=\"/ as sysdba\" parfile=expdp_q.par
Export: Release 10.2.0.1.0 - Production on Saturday, 15 December, 2012 15:10:12
Copyright (c) 2003, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "SYS"."SYS_EXPORT_SCHEMA_01": userid="/******** AS SYSDBA" parfile=expdp_q.par
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 256 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."DEPT" 5.656 KB 4 rows
. . exported "SCOTT"."EMP" 7.625 KB 9 rows
. . exported "SCOTT"."ININ" 6.773 KB 9 rows
. . exported "SCOTT"."SALGRADE" 5.585 KB 5 rows
. . exported "SCOTT"."BONUS" 0 KB 0 rows
Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:
/upload/exp_scott.dmp
Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 15:10:25
匯出成功。使用引數檔案的一個重要好處是不需要進行跳脫字元處理,直接使用就可以了。
4、結論
Query引數是exp/imp和Data Pump中很好使用的一個引數型別,本文記錄下這種使用方法,權當記錄。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29618264/viewspace-2084526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Data Pump】Data Pump的並行引數原理並行
- Oracle Data Pump 11G 資料泵元件Oracle元件
- Oracle資料泵(Oracle Data Pump) 19cOracle
- 【Data Pump】理解expdp中的ESTIMATE和ESTIMATE_ONLY引數
- 資料泵的TRANSFORM引數說明及使用ORM
- exp和expdp的filesize引數的使用--匯出多個檔案
- Oracle 12C新特性-資料泵新引數(LOGTIME)Oracle
- MySQL query_cache_type的DEMAND引數介紹和使用舉例MySql
- 資料查詢語句:DQL(Data Query Language)
- 【Data Pump】expdp/impdp Job基本管理
- Oracle 12C新特性-資料泵新引數(VIEWS_AS_TABLES)OracleView
- nuxt 過濾 query 引數UX
- 資料泵重建使用者
- Spring Data JPA 在 @Query 中使用投影的方法Spring
- Oracle資料泵的匯入和匯出Oracle
- 使用Exp和Expdp匯出資料的效能對比與最佳化
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- http_build_query引數拼接urlHTTPUI
- 【DATAPUMP】Oracle資料泵優化及提高效率的一些引數介紹Oracle優化
- pytest的資料驅動和引數傳遞
- 使用impdp,expdp資料泵進入海量資料遷移
- @Query註解的用法(Spring Data JPA)Spring
- Camstar Protal Studio 使用引數查資料
- 細緻入微:如何使用資料泵匯出表的部分列資料
- 殺停資料泵
- Spring Data JPA REST Query CriteriaSpringREST
- 談談資料編織(Data Fabric)和資料網格(Data Mesh)的關係
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- 封裝一個強大的追加或更新多個Query引數並自動重新整理的JS方法,附加Query引數獲取封裝JS
- 資料庫升級之-資料泵資料庫
- plsql中資料生成工具data generator的使用SQL
- CDM(Conceptual Data Model,概念資料模型)和 PDM(Physical Data Model,物理資料模型)模型
- 資料泵匯出匯入
- .yaml引數檔案的編寫和使用YAML
- 汽車輪胎打氣泵方案的開發與引數簡介
- CSV Data Set Config 引數化怎麼從多個檔案中讀取資料?
- 液壓泵的工作原理與分類,定量泵與變數泵是啥概念?變數
- SpringJpa @query 中根據傳入引數(欄位)排序Spring排序
- 引數的定義和引數的傳遞