Oracle

從模式導出導入沒有約束的表

  • October 30, 2020

我正在嘗試使用數據泵進行導入,但我正在努力提出正確的選擇。導出被視為模式導出。我試圖只導入表,沒有其他數據庫對象。

我目前正在使用

INCLUDE=TABLE
TABLE_EXISTS_ACTION=REPLACE
REMAP_SCHEMA=
REMAP_TABLESPACE=

這是正確導入表,但我有點驚訝地看到導入也在表上創建約束和触發器,或者至少嘗試這樣做。觸發器失敗,因為它們包含數據庫中不存在的模式名稱。

我認為INCLUDE=TABLE只使用表格會被包括在內。顯然情況並非如此。我無法使用EXCLUDE=CONSTRAINT,或者EXCLUDE=TRIGGER因為我已經在使用 INCLUDE 將導入限制為表。

關於如何將導入建構為僅導入表的任何想法?

你說得對,我認為INCLUDE=TABLE只使用表格會被包括在內,但它也包括所有相關對象。INCLUDE=TABLE這意味著當您在導入時使用時,將為您創建約束和触發器。


可能的解決方案

如果您有可能使用該命令重新創建轉儲,expdp那麼您可能只想導出所需模式的表並使用該INCLUDE參數。

包括

用途: 使您能夠通過為目前導出模式指定對象和對像類型來過濾導出的元數據。導出指定的對象及其所有依賴對象。這些對象的授權也會被導出。

exp_include.par

這基本上就是 expdp 參數文件。

FULL=N
...
SCHEMAS=<your_schema(s)>
INCLUDE=TABLE
...

這將創建所需架構的轉儲,並且僅包含表和依賴對象。


生成所需文件後,使用選項*.dmp導入。EXCLUDE=...

排除

用途: 使您能夠通過指定要從導入作業中排除的對象和對像類型來過濾導入的元數據。

imp_exclude.par

這是 impdp 的參數文件。

FULL=Y
...
EXCLUDE=STATISTIC
EXCLUDE=CONSTRAINT
EXCLUDE=TRIGGER
...

這應該會導致正確導入表。

參考資料

引用自:https://dba.stackexchange.com/questions/278785