1. 程式人生 > >expdp之query引數 ---按指定條件匯出資料

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 內容如下:

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 成功完成