3.导出过滤参数
数据泵包含几个与导出过滤有关的参数,其中一些是旧的导出参数的替代品,另一些是新的参数。
•CONTENT
使用CONTENT参数,可以过滤要写入导出转储文件中的内容。CONTENT参数可取以下三个值:
ALL,同时导出表数据和表及其他对象的定义(元数据);
DATA_ONLY,只导出表行;
METADATA_ONLY,只导出元数据。
例子如下:
$ expdp system/manager DUMPFILE=expdati.dmp CONTENT=DATA_ONLY
注解 CONTENT=METADATA_ONLY 选项等价于原来的导出实用程序中的ROW=n选项。
•EXCLUDE和INCLUDE
EXCLUDE和INCLUDE是两个对立的参数,可用来执行称为元数据过滤(metadata filtering)的工作。元数据过滤允许在数据泵导出或导入作业中选择去除或包含指定类型的对象。在旧有导出实用程序中,使用CONSTRAINS.GRANTS和INDEXES参数来指定是否想要导出那些对象。
使用EXCLUDE和INCLUDE参数,除预先可以过滤的4个对象以外,可以包括或排除许多其他类型的对象。例如,如果不希望在导出过程中导岀任何程序包,则可以借助于EXCLUDE参数来指定。
注解 如果使用CONTENT=DATA_ONLY选项(与旧的ROW=Y参数相同),除表行数据外,不导出任何对象。自然,在此情况下,你不能使用EXCLUDE或INCLUDE参数。
简单设置EXCLUDE参数,可在导出或导入操作中排除特定的数据库对象。另一方面,INCLUDE参数允许只包括一组特定的对象。以下是EXCLUDE和INCLUDE参数的格式:
EXCLUDE=object_type[:name_clause]
INCLUDE=object_type[:name_clause]
对于EXCLUDE和INCLUDE参数,名字子句是可选的。正如所知,数据库的一些对象(如表、索引、程序包和过程等)是有名字的,而其他一些对象则是没名字的。EXCLUDE或INCLUDE参数中的名字子句允许使用一个SQL函数来过滤有名字的对象。
以下是一个简单的例子,它排除用EMP开头的所有表:
EXCLUDE=TABLE:"LIKE 'EMP%'"
在本例中,"LINK 'EMP%'" 是名字子句。
在EXCLUDE或INCLUDE参数中,名字子句是可选的.它只是一个过滤装置,允许你对对象类型(索引、表,等等)做更精细的选择。如果省略名字子句,则所有指定类型的对象都将被排除或包括。
在下例中,Oracle在导出作业中排除所有的索引,因为没有名字子句来过滤某些索引:
EXCLUDE=INDEX
还可以使用EXCLUDE参数排除整个模式,如下例所示:
EXCLUDE=SCHEMA:"='HR'"
INCLUDE参数与EXCLUDE参数正好相反:它强行在导岀中包括一组特定的对象。与EXCLUDE参数的情况相同,可以使用一个名字子句来精确限定要导出哪些对象,因而,具有在细粒度级上选择对象的能力。
以下三个例子说明如何使用名字子句来限定对象的选择:
INCLUDE=TABLE:"IN('EMPLOYEES','DEPARTMENTS')"
INCLUDE=PROCEDURE
INCLUDE=INDEX:"LIKE 'EMP%'"
第一个例子指示数据浆作业只包括两个表:employees和departments.
第二个例子中,INCLUDE参数指定该导出作业只包括过程。
第三个例子指定在导出作业中只包括以EMP开头的索引。
下例说明如何使用斜杠(\)转义(escape)双引号:
$ expdp scott/tiger DUMPFILE-dumphere:file%U.dmp schemas=SCOTT EXCLUDE=TABLE:"='EMP'",EXCLUDE=FUNCTION:"='MY_FUNCTION'"
注解 EXCLUDE和INCLUDE参数是对立的.可以使用一个或另一个参数,但不能同时在一个作业中使用.
使用EXCLUDE或INCLUDE参数过滤元数据时,请记住,所有依赖被过滤的对象的对象都以同样的方法被过滤掉。例如,当使用EXCLUDE参数排除表时,也可以自动排除与该表相关的索引、约束、触发器等.
•REMAP_DATA
REMAP_DATA参数允许用一个新值替换某个列中的多个值。列的新值由重映射函数 (remap function)指定。在将数据从产品系统移动到测试系统,而且很可能有的列包含由于保密等原因而需要更改的敏感信息时,可使用此参数。你可以使用相同的重映射函数映射引用约束中的子列和父列。
下面的例子说明如何应用重映射函数到一个表中的两个列:
$ expdp hr DIRECTORY=dpump_dir1 DUMPFILE=remap1.dmp TABLES=employees
REMAP_DATA=hr.emplovees.employee_id:hr.remap.minus10
REMAP_DATA=hr.employees.first_name:hr.remap.plusx
例子中,employees表的EMPLOYEEID和FIRST_NAME列用属于程序包REMAP的两个函数REMAP10和PLUSX重映射。
•DATA_OPTIONS
DATA_OPTIONS参数允许在导出过程中处理特定的数据类型时指定选项。只能将此参数指定为XML_CLOBS(DATA_OPTIONS=XMLCLOBS)。
•QUERY
QUERY参数与它在传统的导出实用程序中的作用相同:借助于SQL语句选择导出的表行数据oQUERY参数允许用一个表名限定SQL语句,使得SQL语句只适用于特定的表,如下所示:
QUERY=OE.ORDERS:"WHERE order_id>100000"
在本例中,订单表中的ordcr_id大于100000的那些行被导出.
•SAMPLE
使用SAMPLE参数(它是OracleDatabase10g版本2的新参数),可以只导出表的一个数据子集»SAMPLE参数允许指定范围从0.0000ol到100的一个百分数。此参数的语法如下:
SAMPLE=[[schema_name.]table_name:]sample_percent
例子如下:
SAMPLE="HR"."EMPLOYEES":50
通过给SAMPLE_PERCENT子句一个值,可以指定样本大小。模式名和表名是可选的。如果不提供模式名,则假定为当前模式。如果提供模式名,则必须提供表名。否则,在导出作业中所有的表将使用同一个百分数值。在下例中,导出作业中的所有表的样本大小为70%,因为它未指定表名:
$ expdp hr/hr DIRECTORY=dpump_dirl DUMPFILE=sample.dmp SAMPLE=70
•TRANSPORTABLE
TRANSPORTABLE参数允许指定在进行表模式导出时,是否想要数据库导出特定表(以及分区和子分区)的元数据。可对TRANSPORTABLE参数指定值ALWAYS或NEVER。
下面是一个例子:
$ expdp sh DIRECTORY=dpump_dirl DUMPFILE=hr.dmp TABLES=employees TRANSPORTABLE=always
此参数没有默认值。




