zzw原创:转载请注明出处

在oracle的expdp 及imdpd命令中,exclude及include参数还是有一些要注意的地方,特别是涉及选择性条件时。

一、通用

1、exclude及include参数不能同时使用,这两个是相互排斥的。

2、在parfile参数文件中,可以同时用多个exclude参数,但只能用一个include参数

3、include、exclude参数是默认就是针对对象名称操作的:如表名、视图名、过程名、包名等,所以设计条件时,可以从查询语句select  distinct(object_type)  from  all_objects中先取得这些名称。

4、include、exclude参数中,在escape语句中,不能用\作为转义符

(1)、include=table:"like 'SEC_%'" 
    
结果:SECAAAROLE、SEC_ROLE、SEC_OPERATION三个表,说明,_依旧表示一个占位符的作用

(2)、include=table:"like 'SEC\_%'"
     
 不能导出SECAAAROLE、SEC_ROLE、SEC_OPERATION三个表,说明在''中,\并不表示转义符

(3)、include=table:"like 'SEC\_%'escape'\'"  这样会报错:
       ORA-39001:
invalid argument value
       ORA-39071: Value for INCLUDE is badly
formed.
       ORA-01425: escape character must be character string of length
1
    (4)、改成这样  include=table:"like 'SEC#_%'escape'#'"
        
可以正确导出SEC_ROLE、SEC_OPERATION二个表,但不能导出SECAAAROLE这个表。结论:在include、exclude参数中,在escape语句中,不能用\作为转义符!!,可以选用选用其他特殊字符作为转义符。如果确实要用\,也要可以用ascii码代替:include=table:"like 'SEC\_%'escape
chr(92)"

二、exclude参数用法

a、exclude参数在parfile文件中可以有多个,还有多种写法。

[oracle@test189 temp2]$ vi zzw-expscript_impclude.par

DIRECTORY=ZZW_EXPDPDIR
DUMPFILE=bdctemp1.dmp
exclude=table:"like
'BDC%'" , table:"like 'USPC%'",table:"like 'AUDIT%'"
exclude=table:"like
'SMS#_%'escape'#'"
exclude=table:"in (select table_name from user_tables 
where regexp_like(table_name,'^MENU.*')
or
regexp_like(table_name,'^SEC_.*_.*$'))"
LOGFILE=bdctemp1.log

b、支持换行,比如,上面的语句,在parfile文件中如下换行也是可以的

[oracle@test189 temp2]$ vi zzw-expscript_impclude.par

DIRECTORY=ZZW_EXPDPDIR
DUMPFILE=bdctemp1.dmp
EXCLUDE=STATISTICS
exclude=view,table:"like
'BDC%'" ,
table:"like 'USPC%'",
table:"like
'AUDIT%'"
exclude=table:"like 'SMS#_%'escape'#'"
exclude=table:"in (select
table_name from user_tables  where regexp_like(table_name,'^MENU.*') 
or regexp_like(table_name,'^SEC_.*_.*$'))"
LOGFILE=bdctemp1.log

ps:采用这种exclude=table:"in (select table_name from user_tables)"方法导出时,我环境中会出现 ORA-07445: exception encountered: core dump     [kokemisz()+34] [SIGSEGV] [ADDR:0x18] [PC:0x143F5B6] [Address not mapped to object] []  这样的错误,在parfile文件中加入 EXCLUDE=STATISTICS条件问题就解决了。

三、include参数用法

a、不允许的写法

include=table:"='BOSS'" or table:"='SEC_ROLE'"

include=table:"='BOSS'" , table:"='SEC_ROLE'"

b、允许的写法
     include=table:"='BOSS'"

include=table:"in('BOSS','SEC_ROLE')"

include=table:"in(select table_name from user_tables  where table_name
in('BOSS','SEC_ROLE'))"

include=table:"in(select table_name from user_tables  where
regexp_like(table_name,'^BDC_.{4}_.*$'))"   #注意,_在like中表示占位符,在regexp_like不表示占位符。

include=table:"in(select table_name from user_tables  where
regexp_like(table_name,'^BDC_.{8}_.*$') or
regexp_like(table_name,'^ATTACHMENT_.{4}') or  table_name like
'QRTZ#_%'escape'#')"

c、网上有人提供的好方法(http://i.ruby.blog.163.com/blog/static/2479341720137129551334/?suggestedreading&wumii

导出某些无规律的表,有很多,也许需要动态维护
    建立表exp_table
    create table exp_table
(table_name varchar2(100);
    然后将需要导出的表名插入exp_table中。
    insert into
exp_table values(‘A’);
    insert into exp_table values(‘B’);
    insert
into exp_table values(‘PUB_GOODS’);
    insert into exp_table
values(‘PUB_GOODS_UNIT’);

最后导出的的时候:
    parfile
    userid=user/passwd
   
directory=expdir
    dumpfile=testfile.dmp
    include=table:" in (select
table_name from exp_table ) "
   
这样就可以导出exp_table中所包含的所有表了。更神奇的是,可以在exp_table里面将自己也插入进去,然后把exp_table也导出哦

d、这样的写法是错误的,因为包含两个include语句

DIRECTORY=ZZW_EXPDPDIR
    DUMPFILE=bdctemp1.dmp
   
include=table:"='BOSS'"
    include=table:"='SIMS'"

by zzw 2017.3.28

by zzw 2017.4.13修改 于aspire

zzw原创_expdp及impdp中的exclude及include参数的那点事的更多相关文章

  1. zzw原创_LIKE与regexp_like中的_及转义符

    1.select table_name from user_tables  where table_name like 'MENU%';查出以下表MENUMENUGGG_131MENU_132MENU ...

  2. expdp impdp中 exclude/include 的使用

    exclude和include参数能够在使用expdp或impdp是对特定的对象或对象类型进行筛选或过滤.比如因工作的需要导出特定的表或不导出特定 的表.视图以及存储过程.索引.约束.授权统计信息等等 ...

  3. Oracle expdp impdp中 exclude/include 的使用

    exclude和include参数能够在使用expdp或impdp是对特定的对象或对象类型进行筛选或过滤.比如因工作的需要导出特定的表或不导出特定的表.视图以及存储过程.索引.约束.授权统计信息等等. ...

  4. zzw原创_非root安装fastDFS

    zzw原创_非root安装fastDFS fastDFS 想要非root安装,没找到资料,分析了一下安装脚本,原来作者是留了安装路径的,但没有放出来. 1.解包 [bdc@svr001 setup]$ ...

  5. [原创]如何在Parcelable中使用泛型

    [原创]如何在Parcelable中使用泛型 实体类在实现Parcelable接口时,除了要实现它的几个方法之外,还另外要定义一个静态常量CREATOR,如下例所示: public static cl ...

  6. impdp中的DISABLE_ARCHIVE_LOGGING参数测试

    impdp中的DISABLE_ARCHIVE_LOGGING参数测试 发表于 2017 年 04 月 08 日 由 惜分飞 联系:手机/微信(+86 13429648788) QQ(107644445 ...

  7. 【万字图文-原创】 | 学会Java中的线程池,这一篇也许就够了!

    碎碎念 关于JDK源码相关的文章这已经是第四篇了,原创不易,粉丝从几十人到昨天的666人,真的很感谢之前帮我转发文章的一些朋友们. 从16年开始写技术文章,到现在博客园已经发表了222篇文章,大多数都 ...

  8. 【原创】在VS2012中采用C++中调用DLL中的函数(4)

    这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...

  9. ]flexslider 中文文档 使用教程 参数手册

    [原创]flexslider 中文文档 使用教程 参数手册   要改前人用的flexslider功能,但苦于找不到详细的文档教程,折磨了好久……(所以我才说不爱乱用插件) 为了福利下之后也苦于这个问题 ...

随机推荐

  1. 蚂蚁金服 Service Mesh 渐进式迁移方案|Service Mesh Meetup 实录

    小蚂蚁说: 本文是基于在 Service Mesher Meetup 上海站的主题分享<蚂蚁金服 Service Mesh 渐进式迁移方案>内容整理,完整的分享 PPT 获取方式见文章底部 ...

  2. 【三十二】thinkphp之连接数据库、实例化模型

    1.连接数据库 Thinlphp内置了抽象数据库访问层,把不同的数据操作封装起来.我们只需要调用公共的DB类进行操作即可.DB类会自动调用相应的数据库驱动来处理. 在应用目录/common/conf/ ...

  3. CentOS7 安装Perl

    官网:http://www.cpan.org/src/ wget https:.tar.gz cd perl- ./Configure -des -Dprefix=$HOME/localperl ma ...

  4. linux 打开一个文件现swap文件

    转自:http://blog.csdn.net/eckelwei/article/details/17078187 有时候在用vim打开文件时提示类似以下的信息: 发现交换文件 ".expo ...

  5. 学习笔记29—Linux基础

    一.简单命令: 1.进入文件夹heyi目录:cd ./heyi 2.查看该目录下内容:ls 二.linux压缩和解压缩命令大全 tar命令 解包:tar zxvf FileName.tar 打包:ta ...

  6. Study之6 Neutron(配置使用 Routing)-devstack

    ●Neutron 的路由服务是由 l3 agent 提供的. 除此之外,l3 agent 通过 iptables 提供 firewall 和 floating ip 服务. l3 agent 需要正确 ...

  7. 解决ios下的微信页面背景音乐无法自动播放问题

    在做各种html5场景页面的时候,插入背景音乐是一个很普遍的需求,我们都知道,ios下的safari是无法自动播放音乐的,以至于现在行程一种认知,ios是没有办法自动播放媒体资源的,这个认知其实是错误 ...

  8. Python全栈开发-有趣的小程序

    进度条的打印 import sys,time for i in range(20): sys.stdout.write('$')      #stdout是标准输出的意思,在一般电脑上,stdout的 ...

  9. powerdesiger 导入sqlserver 方法

    https://jingyan.baidu.com/album/7f766daf465e9c4101e1d0d5.html

  10. 如何通过 Terminal 设置截图存储的位置

    由于截图的默认位置是存储在 desktop 上的,而 desktop 又是我们经常见的地方,有一个干净的界面对良好的电脑的体验非常重要,那么可以通过改变截图的默认的存储位置来改变.而改变这一路径需要用 ...