exp userid=$username/$password buffer=10240000 direct=y file=$PF rows=Y log=$exp_dir/$FILENAME2 
不想备份某些以20100203或者100203这样后缀的表该怎么写呢
也就是说比如有张表是t1,还有t1的备份表t1.20100607或者t1.100607
导出数据库的时候不要导出这些备份表

解决方案 »

  1.   


    可以试试:10g的数据泵,它可以排除一些表;EXCLUDE 
    该选项用于指定执行操作时释放要排除对象类型或相关对象 
    EXCLUDE=object_type[:name_clause] [,….] 
    Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDE和INCLUDE不能同时使用 expdp user/pwd dumpfile=exp_dir:tmp EXCLUDE=TABLE:"IN ('T1','T2')"Oracle 10g EXPDP和IMPDP使用说明
    http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4674224.aspx
      

  2.   

    创建一个参数文件expdp.par
    ---------------------------
    dumpfile=exp.dmp
    exclude=table:"like '%.%'"
    ---------------------------执行
    expdp scott/oracle parfile=expdp.par
    可以排除table名带有一个.的表
      

  3.   

    现在要求改了
    是要把T开头,U开头,W开头的表备份下来
    然后把U开头的表中,以数字结尾的去掉
    怎么搞呢
      

  4.   

    先用下面的过程产生要exclude的表:declare
       tn varchar2(40);
       tbs varchar2(4000);
       cursor cur is
       select table_name from user_tables where regexp_like(table_name, '^U.*\d+$'); -- U开头,以数字结尾的表
    begin
       tbs := 'in (''';
       open cur;
       loop
          fetch cur into tn;
          exit when cur%notfound;
          tbs := tbs || tn || ''',''';
       end loop;
       tbs := regexp_replace(tbs, '(.+),''$', '\1') || ')';
       dbms_output.put_line(tbs);
       close cur;
    end;--例如得到
    -- in ('U1','U2','U3')然后在parfile文件中
    exclude=table:"in ('U1','U2','U3')"