imp 导入数据时可否排除其中一张表不导入
在IMP进行数据导入时,能不能把不想导的一张或几张表不进行导入
Oracle9i及以前的imp,exp工具只能选择表导入导出,不能排除表,在Oracle10g中的expdp和impdp增加了exclude参数,允许排除某些不导入的表,对象类型等
在exp的版本中有两种方法排除表的导入和导出
方法一:
加tables=(table1,table2,...,tablen)参数可导入指定表
应该只能指定表,不能排除表
方法二:
在要导入的用户下把你不需要的表建起来,只要是同名
导入时,加上ignore=n参数,这个表报错,就不会导入此表了
在expdp版本中
可以使用子句INCLUDE=TABLE:"LIKE 'TAB%'"来仅导出那些名称以 TAB 开头的表。类似地,您可以使用结构INCLUDE=TABLE:"NOT LIKE 'TAB%'"来排除所有名称以 TAB 开头的表。作为另一种选择,您可以使用EXCLUDE参数来排除特定的对象。
虽然expdp -help指明了exclude的语法:exclude=table:emp
但实际上会出错。
正确的语法是exclude=table:"in ('EMP')"
例子:
C:>expdp oracle/oracle directory=testexpdp dumpfile=zzw_temp3.dmp exclude=TABLE
:"IN('TEST2')"
这是可以的
C:>expdp oracle/oracle directory=testexpdp dumpfile=zzw_temp3.dmp exclude=TABLE
:"IN ('TEST2','ZZW_TEMP2')"
但这是不行的,当排除多个表的时候不行,报ORA-39071: EXCLUDE 值的格式错误
需要增加转义字符,应该这样
C:>expdp oracle/oracle directory=testexpdp dumpfile=zzw_temp3.dmp exclude=TAB
LE:"IN ('TEST2','ZZW_TEMP2')"
归纳总结:
1.表名要大写
2.排除多表的时候要注意使用转义字符
3.排除表的时候,使用了exclude参数,就不要再使用schemas参数,如果有了schemas参数将对应的用户方案的全部对象导出[@more@]