ITPub博客

首页 > 数据库 > Oracle > exp query

exp query

Oracle 作者:studywell 时间:2016-05-31 08:29:12 0 删除 编辑

exp  query

导出语句
exp system/pwd@histdb file=/backup/histexp/dmp/histexp3.dmp log=/backup/histexp/log/histexp3.log parfile=histexp3.par buffer=40960000 statistics=none triggers=n indexes=n

histexp3.par 内容
TABLES=(CIQHIST.XC_PROCESSES) QUERY = "WHERE PROCESS_ID IN (SELECT PROCESS_ID FROM CIQHIST.XC_PROC_IDX WHERE X_DECL_NO IN (SELECT DECL_NO FROM ciqhist.back_decl_no))"

导入语句
imp system/pwd file=/backup/histexp/dmp/histexp3.dmp fromuser=ciqhist touser=ciqusr log=/backup/histexp/log/histimp3.log buffer=40960000 ignore=y commit=y grants=no CONSTRAINTS=n


多个同构表,同样的条件,可用如下方法:
exp ciqusr/pwd parfile=T_DECL_GOODS_PACK_CONTAINER.par   

T_DECL_GOODS_PACK_CONTAINER.par

file=T_DECL_GOODS_PACK_CONTAINER.dmp
log=T_DECL_GOODS_PACK_CONTAINER.log
buffer=40960000
statistics=none
triggers=n
indexes=n
tables=(T_DECL_GOODS,T_DECL_PACK,T_DECL_CONTAINER)
query='where decl_no in (select decl_no from t_temp_declno)'


限制条件

1.QUERY参数必须和TABLES参数一起使用,仅支持表级导出模式
2.QUERY参数不能同时兼容DIRECT参数,两者不能同时使用
    DIRECT参数说明:直接路径方式导出,就是直接使用direct io来读取数据文件,不经过buffercache,导出数据比较快。ORACLE会绕过SQL语句处理引擎,直接从数据文件中读取数据,然后写入导出文件。如果表中包含某些特定字段数据类型,比如大对象类型,碰到这样情况的时候,ORACLE会自动切换到常规的导出方式,并在导出日志中记录。
3.QUERY参数仅支持同构表同时导出,不支持异构表同时导出
4.QUERY参数不支持部分列导出
         如果在QUERY参数中仅指定部分列导出,将会产生一个错误->没有行被导出(只导出表结构,空表)。这是因为Oracle是基于行存储的数据库,只能做水平分割,不支持垂直分割。在双引号之间只可以写入where子句内容。
5.QUERY参数在命令行中使用时注意转义字符修饰         (还是多用参数文件好)
         因为不同的操作系统commend line中特殊字符的定义是不同的,有些字符必须使用转义字符修饰才能表达出来,而且不同操作系统的转义字符又有所区别,应该根据不同的操作系统采用不同的方法。
Example
Windows系统
exp sfcp/sfcp file=20140409leo1-6.dmp tables=leo1 rows=y query=""" where object_id<1000 """
windows中,需要在WHERE语句的两端使用三个双引号

Linux系统
exp sfcp/sfcp file=20140409leo1-6.dmp tables=leo1 rows=y query= \" where object_id\<1000 \"
linux中,需要在WHERE语句特殊字符前添加\转义字符
         
        

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29519108/viewspace-2109561/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-03-04

  • 博文量
    307
  • 访问量
    535392