當前位置:編程學習大全網 - 編程語言 - oracle 怎樣用imp.exe導入導出數據

oracle 怎樣用imp.exe導入導出數據

Oracle 提供兩個工具imp.exe 和exp.exe分別用於導入和導出數據。這兩個工具位於Oracle_home/bin目錄下。

導出數據exp

1 將數據庫ATSTestDB完全導出,用戶名system 密碼123456 導出到c:/export.dmp中

exp system/123456@ATSTestDB file=c:/export.dmp full=y

其中ATSTestDB為數據庫名稱,system為該數據庫裏的賬戶,123456為其密碼。

2 將數據庫中system用戶與sys用戶的所有相關資源導出(表,存儲過程,方法,視圖等等)

exp system/123456@ATSTestDB file= c:/export.dmp owner=(system,sys)

3 將數據庫中的表sys.table1、owbsys.table2導出

exp system/123456@ATSTestDB file= c:/export.dmp tables=( sys.table1, owbsys.table2)

註意,需要加上表的schema名稱,如果沒有加的話默認是導當前connected用戶的表,當然妳連接上去的賬戶要對相應的表有權限。

4 將數據庫中的表table1中的字段Title以"GangGe"打頭的數據導出

exp system/123456@ATSTestDB file= c:/export.dmp tables=(table1) query=/" where Title like 'GangGe%'/"

斜杠 “/” 後面跟冒號是為了轉義字符冒號” “ “用的,因為後面是壹條條件查詢語句。Query參數只能指定壹個,如果Query要為多張表,所以同樣,tables裏面也只能有壹張表,或者多張表,然後query裏面的條件在這些表上面都可以運行。否則只好多寫幾條exp語句了。

導出後,或許發現數據比較大,我們可以用壹些壓縮工具對數據進行二次壓縮,例如用winzip, winrar, 7zip等第三方工具。同樣,exp支持壹個參數用戶直接對數據進行壓縮:compress = y, 這個參數直接加到命令的後面即可實現導出的同時壓縮數據。

1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:/daochu.dmp中

exp system/manager@TEST file=d:/daochu.dmp full=y

2 將數據庫中system用戶與sys用戶的表導出

exp system/manager@TEST file=d:/daochu.dmp owner=(system,sys)

3 將數據庫中的表inner_notify、notify_staff_relat導出

exp aichannel/aichannel@TESTDB2 file= d:/datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

4 將數據庫中的表table1中的字段filed1以"00"打頭的數據導出

exp system/manager@TEST file=d:/daochu.dmp tables=(table1) query=" where filed1 like '00%'"

上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。

也可以在上面命令後面 加上 compress=y 來實現。

導入數據imp

我們知道怎麽提取數據,那麽還原的時候,就需要使用imp命令把導出的數據加載進去。

1 向ATSTestDB裏面加載c:/export.dmp數據

imp system/123456@ATSTestDB file=c:/export.dmp

好了,導數據得時候,有可能報錯了。為什麽?有兩種主要的原因:

A. 導入的對象(表,視圖,方法等)原本不屬於當前連接的用戶的

B. 導入的對象在該數據庫的指定用戶下已經存在

C. 導入的對象的原本用戶不再這個數據庫裏

所有對象全部導入到指定的賬戶下:

Imp system/123456@ATSTestDB file=c:/export.dmp fromuser=sys touser=system

其中fromuser=sys為.dmp文件裏的對象的原先的owner, touser=system 為作為導入的對象的新的Owner.

忽略/插入數據

Imp system/123456@ATSTestDB file=c:/export.dmp ignore=y

其中ignore=y告訴imp.exe把數據直接插入到相應對象(並且如果導入的對象裏面有其他的對象,如約束,索引等,會在數據插入後被創建)。

2 加載其中的指定表table1,table2

imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2)

3 忽略加載約束

有時候導數據進來的時候,我們不需要把它的約束,比如壹些外鍵約束等都導進來,可以加上參數constraints=N

imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2) constraints=N

4 不加載索引(比如唯壹性的索引)

imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2) indexs=N

5 只加載結構,不加載數據

如果只要表的結構等定義(約束,觸發器),那麽不要裏面的數據,可以加上參數rows=N

imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2) rows=N

對於上述操作登陸操作的對象system是管理員,如果不是管理員,而是普通用戶,那麽這個用戶必須有創建刪除對象的權利,對象可能包括 表,視圖,方法,存儲過程等等常見的對象。為什麽“可能”包括?這個要看導入導出的時候是否涉及相關類型的對象而定。

1 將D:/daochu.dmp 中的數據導入 TEST數據庫中。

imp system/manager@TEST file=d:/daochu.dmp

imp aichannel/aichannel@TEST full=y file=d:/datanewsmgnt.dmp ignore=y

上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。

在後面加上 ignore=y 就可以了。

2 將d:daochu.dmp中的表table1 導入

imp system/manager@TEST file=d:/daochu.dmp tables=(table1)

基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。

註意:

操作者要有足夠的權限,權限不夠它會提示。

數據庫時可以連上的。可以用tnsping TEST 來獲得數據庫TEST能否連上。

  • 上一篇:學軟件編程當程序員和學挖掘機哪個有前途?
  • 下一篇:如何用c語言作出有圖形界面的小程序
  • copyright 2024編程學習大全網