expdp之query参数 ---按指定条件导出数据

需求:生产环境中,从A表中(3000万记录),按条件读取1000万条记录插入到B表中.
要求对生产环境的影响降到最低。

 

思路:
1.由于需求不是很紧急,因此选择在业务不繁忙的中午进行。
2.使用数据泵expdp 的query 按指定的条件将A表的1000万条记录导出为dmp文件。
3.使用impdp导入dmp。

 

下面模拟一下实现过程:

一、授予导出用户report 对目录DATA_PUMP_DIR的读/写权限。
C:/Users/Liangwei>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 1 20:24:20 2011
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> col owner for a5;
SQL> col DIRECTORY_NAME for a13;
SQL> col DIRECTORY_PATH for a41;


SQL> SELECT *  FROM  dba_directories  WHERE directory_name='DATA_PUMP_DIR';

OWNER DIRECTORY_NAM DIRECTORY_PATH
----- ------------- -----------------------------------------
SYS   DATA_PUMP_DIR d:/oracle/Liangwei/admin/liangwei/dpdump/

 

SQL> grant read ,write on directory  DATA_PUMP_DIR  to report;

授权成功。

SQL> exit

二、编写导出脚本


1.编写参数文件

 

如要导出的表的查询条件如下:


SELECT * FROM test WHERE object_type='TABLE';
SELECT * FROM wflog WHERE logno=2;

 

参数文件test.par 内容如下:

DUMPFILE=test.dmp DIRECTORY=DATA_PUMP_DIR JOB_NAME=JOB02 TABLES= ( TEST, WFLOG ) QUERY= ( wflog:"where logno=2", test:"where OBJECT_TYPE='TABLE'" )

2.编写导出命令

 

D:/oracle>expdp  report/report  parfile=test.par

Export: Release 11.2.0.1.0 - Production on 星期二 3月 1 20:48:51 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "REPORT"."JOB02":  report/******** parfile=test.par
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 128 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
处理对象类型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
处理对象类型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 导出了 "REPORT"."TEST"                             13.60 KB      44 行
. . 导出了 "REPORT"."WFLOG"                            25.63 KB      18 行
已成功加载/卸载了主表 "REPORT"."JOB02"
******************************************************************************
REPORT.JOB02 的转储文件集为:
  D:/ORACLE/LIANGWEI/ADMIN/LIANGWEI/DPDUMP/TEST.DMP
作业 "REPORT"."JOB02" 已于 20:49:23 成功完成

 

 

二、导入数据

D:/oracle/>impdp report/report  DUMPFILE=test.dmp DIRECTORY=DATA_PUMP_DIR JOB_NAME=JOB02

Import: Release 11.2.0.1.0 - Production on 星期二 3月 1 20:54:12 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功加载/卸载了主表 "REPORT"."JOB02"
启动 "REPORT"."JOB02":  report/******** DUMPFILE=test.dmp DIRECTORY=DATA_PUMP_DIR JOB_NAME=JOB02
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入了 "REPORT"."TEST"                             13.60 KB      44 行
. . 导入了 "REPORT"."WFLOG"                            25.63 KB      18 行
处理对象类型 TABLE_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
处理对象类型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
处理对象类型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
作业 "REPORT"."JOB02" 已于 20:54:20 成功完成

你可能感兴趣的:(expdp之query参数 ---按指定条件导出数据)