Exp和数据泵(Data Pump)的query参数使用

 

Oracle提供了逻辑备份和物理备份两种备份手段。早期的Exp/Imp10g之后的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、命令行数据导出

 

在命令行导出过程中,三种导出模式(SchemaTablesFull)都可以使用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导出方式的一个重要要求,就是转义字符。在useridquery参数中,我们都可以看到转义字符的踪迹。在命令行方式下,我们需要对引号、大小比较符进行转移处理。很多时候,这样的命令和官方提示中存在一些差异,需要我们额外关注。

 

 

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/impData Pump中很好使用的一个参数类型,本文记录下这种使用方法,权当记录。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-751176/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17203031/viewspace-751176/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle中使用exp工具可以导出数据库中的数据,但不会导出结构信息(如表结构、索引等)。可以使用命令 "exp user/password@database file=filename.dmp tables=table1,table2,..." 来导出特定的表的数据。 ### 回答2: Oracle数据库中,可以使用exp命令来导出数据exp是Oracle数据库提供的一个工具,可以将数据库中的数据导出为一个文件,这样可以将数据备份或者迁移到另一个数据库中进行使用使用exp命令导出数据非常简单。首先,需要登录到Oracle数据库的命令行界面,然后输入以下的命令: exp username/password file=export.dmp tables=(table1, table2, ...) 其中,username/password表示登录数据库使用的用户名和密码,file表示指定导出数据的文件名,tables表示需要导出数据的表名。可以导出多个表的数据,只需要在tables参数中指定多个表名即可。 执行以上命令后,exp将会开始导出指定表的数据,并将数据保存为一个二进制文件(以.dmp为后缀名)。这个文件中包含了指定表的数据以及相关的数据库对象信息。导出过程中,exp会显示出导出的进度和相关信息。 导出完成后,可以将导出的数据文件复制到其他地方进行备份或者迁移。可以使用imp命令来将导出的数据文件导入到另一个数据库中,实现数据的恢复或者迁移。 需要注意的是,exp只能导出数据,无法导出数据库的表结构、触发器、视图、存储过程等其他数据库对象。如果需要导出这些对象,可以考虑使用其他工具,如expdp。此外,exp导出的数据文件是二进制文件,无法直接编辑或者查看其中的数据内容,如果需要查看或者编辑导出的数据,可以考虑使用其他工具,如文本编辑器、数据库查询工具等。 ### 回答3: Oracle使用exp命令可以将数据库中的数据导出到外部文件中,但仅限于导出数据,不包括数据库的结构、索引、存储过程等其他对象。 exp是Oracle数据库自带的命令行工具,用于数据导出。使用exp命令可以选择性地导出指定表、指定用户或整个数据库数据,并将其保存为.dmp文件。导出的数据可以包括表的所有行和列,也可以根据需要进行过滤和选择。 为了使用exp命令,首先需要连接到Oracle数据库实例,并确保用户具有足够的权限执行导出操作。在命令行中输入exp,然后根据提示输入用户名、密码和导出设置。 使用exp导出数据的常用选项包括: - tables:指定要导出的表名,多个表之间可以用逗号分隔; - query:指定导出数据的查询条件,只导出满足条件的数据; - file:指定导出文件的路径和名称; - consistent:保证导出的数据是一致的,即在导出开始之前使用一致性读取模式。 需要注意的是,exp只导出数据,不包括数据库的结构。如果需要导出数据库的结构,可以使用expdp命令或者第三方工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值