欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle 导出数据expdp的query参数用法

程序员文章站 2024-03-13 16:52:57
...

今天收到了一个数据同步的需求,具体信息是将原oracle数据库的几张表的部分数据同步到另外一台oracle数据库。完成这个需求使用的是oracle的expdp导出工具。因为是导出表的部分数据,因此用到了expdp的query参数。下面的步骤主要是写的query参数的使用,因为数据的导入使用impdp导就很容易了,这里就不介绍了。

(1)首先在源端进行数据的导出,需要先创建导出路径。

--创建导出路径
create directory TEST_DIR as '/home/oracle/test_dir';

通过dba_directories来查看系统中已创建的目录 
set line 200
col DIRECTORY_PATH format a60
select * from dba_directories;

 (2)使用expdp的query参数有两种方式,一种是一个一个表的导出,一种是批量的导出。

(2.1)先介绍单个表的数据导出,特别注意query后面的转义字符的使用。

expdp \'sys/m\!Y25ntb\? as sysdba\' directory=TEST_DIR dumpfile=TEST_DIR.dmp tables=scott.testa  query=scott.testa:\"WHERE pub_date\>to_date\(\'2019-08-23 00:00:00\',\'yyyy-mm-dd hh24:mi:ss\'\)\" logfile=TEST_DIR.log

(2.2)使用query批量导出表数据 

使用批量的时候需要用到参数文件
[[email protected] test_dir]# more test.par

DUMPFILE=test.dmp
DIRECTORY=TEST_DIR
TABLES=
(
SCOTT.TEST1,             
SCOTT.TEST2 ,
SCOTT.TEST3, 
SCOTT.TEST4, 
SCOTT.TEST5, 
SCOTT.TEST6, 
SCOTT.TEST7, 
SCOTT.TEST8 ,
SCOTT.TEST9,
SCOTT.TEST10
)
QUERY=
(
SCOTT.TEST1:"where stat_date>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST2:"where stat_date>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST3:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST4:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST5:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST6:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST7:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST8:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST9:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')",
SCOTT.TEST10:"where stat_time>to_date('2019-08-23 00:00:00','yyyy-mm-dd hh24:mi:ss')"
)



导出命令;
expdp system/oracle  parfile=test.par

将导出的文件 test.dmp传输到目标端使用impdp进行数据的导入即可。