oracle排除表匯入匯出

chenfengwww發表於2009-07-24

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@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22036495/viewspace-1024574/,如需轉載,請註明出處,否則將追究法律責任。

相關文章