2009-09-16 50 views
4

我們從客戶端獲得* .dmp文件,其中包含一些被屏蔽的表數據,包括索引和約束。 我的結尾有這些表結構(包括索引和約束)。 我想使用'imp'命令在Oracle10g中只導入沒有索引和約束的數據(存在於.dmp文件中)。如何在Oracle中使用'imp'命令只導入沒有索引和約束的數據

我知道'imp'命令。請幫助我讓我知道'imp'命令中的選項只導入數據。

我試過使用 - rows = yes indexes = no但是這沒有幫助。

回答

8

您應該能夠指定索引= N和約束= N。

欲瞭解更多信息:

%> imp help=y 

下面是在選擇一些好的信息鏈接: Oracle imp information

4

我從你的文章中假設你已經在你的數據庫中有表和輔助結構,而你只是想壓制錯誤信息。如果確實如此,您想要的選項是IGNORE=Y

Oracle文檔可在線獲取。你不會說你使用的是什麼版本,但是當你使用IMP時,我會說9i是一個很好的選擇。 Find out more.。 (在更高版本中,您應該檢出DataPump)。

0

恕我直言IMP不能防止被應用的約束和觸發器被解僱,忽略= Y只會忽略出現的錯誤。也許datapump允許它,我不知道。

所以,你必須:

  1. 手動禁用對進口表
  2. 所有觸發器和約束做表= <表名>行= Y指數= N約束= N
  3. 使進口觸發器
  4. 啓用驗證約束並解決所有錯誤(查找和編輯/刪除違規值)。
0

請小心使用與您的數據庫版本完全匹配的imp版本。我遇到了這個問題...

+0

小鬼是向後兼容的,但不是向前兼容 – 2009-09-16 13:35:49

+0

這將是預計,但不,根據我的經驗...... – 2009-09-16 20:30:14

0

Ignore=Y。由於您已經擁有架構,因此它將忽略創建錯誤。

1

用show = y選項導入轉儲。這將從dmp文件創建/提取腳本。現在您可以從日誌中刪除索引和約束腳本並針對數據庫執行操作。

在這裏你可以看到很多exp /數據泵相關的例子。 http://www.acehints.com/p/site-map.html

1

您需要禁用所有觸發器,然後使用CONSTRAINTS = N參數導入數據。考慮導入表G3E_COMPONENT與約束,外鍵及觸發器:

SQL>alter table G3E_COMPONENT disable all triggers; 

導入您的數據:

imp userid=USER/[email protected] CONSTRAINTS=N DATA_ONLY=Y STATISTICS=NONE file=export.exp log=imp.log TABLES=G3E_COMPONENT 

應該做的伎倆

相關問題