Oracle Imp and Exp (導(dǎo)入和導(dǎo)出)工具使用
2024-08-29 13:53:58
供稿:網(wǎng)友
Oracle 提供兩個(gè)工具imp.exe 和exp.exe分別用于導(dǎo)入和導(dǎo)出數(shù)據(jù)。這兩個(gè)工具位于Oracle_home/bin目錄下。
導(dǎo)出數(shù)據(jù)exp
1 將數(shù)據(jù)庫ATSTestDB完全導(dǎo)出,用戶名system 密碼123456 導(dǎo)出到c:/export.dmp中
exp system/123456@ATSTestDB file=c:/export.dmp full=y
其中ATSTestDB為數(shù)據(jù)庫名稱,system為該數(shù)據(jù)庫里的賬戶,123456為其密碼。
2 將數(shù)據(jù)庫中system用戶與sys用戶的所有相關(guān)資源導(dǎo)出(表,存儲(chǔ)過程,方法,視圖等等)
exp system/123456@ATSTestDB file= c:/export.dmp owner=(system,sys)
3 將數(shù)據(jù)庫中的表sys.table1、owbsys.table2導(dǎo)出
exp system/123456@ATSTestDB file= c:/export.dmp tables=( sys.table1, owbsys.table2)
注意,需要加上表的schema名稱,如果沒有加的話默認(rèn)是導(dǎo)當(dāng)前connected用戶的表,當(dāng)然你連接上去的賬戶要對(duì)相應(yīng)的表有權(quán)限。
4 將數(shù)據(jù)庫中的表table1中的字段Title以"GangGe"打頭的數(shù)據(jù)導(dǎo)出
exp system/123456@ATSTestDB file= c:/export.dmp tables=(table1) query=/" where Title like 'GangGe%'/"
斜杠 “/” 后面跟冒號(hào)是為了轉(zhuǎn)義字符冒號(hào)” “ “用的,因?yàn)楹竺媸且粭l條件查詢語句。Query參數(shù)只能指定一個(gè),如果Query要為多張表,所以同樣,tables里面也只能有一張表,或者多張表,然后query里面的條件在這些表上面都可以運(yùn)行。否則只好多寫幾條exp語句了。
導(dǎo)出后,或許發(fā)現(xiàn)數(shù)據(jù)比較大,我們可以用一些壓縮工具對(duì)數(shù)據(jù)進(jìn)行二次壓縮,例如用winzip, winrar, 7zip等第三方工具。同樣,exp支持一個(gè)參數(shù)用戶直接對(duì)數(shù)據(jù)進(jìn)行壓縮:comPRess = y, 這個(gè)參數(shù)直接加到命令的后面即可實(shí)現(xiàn)導(dǎo)出的同時(shí)壓縮數(shù)據(jù)。
導(dǎo)入數(shù)據(jù)imp
我們知道怎么提取數(shù)據(jù),那么還原的時(shí)候,就需要使用imp命令把導(dǎo)出的數(shù)據(jù)加載進(jìn)去。
1 向ATSTestDB里面加載c:/export.dmp數(shù)據(jù)
imp system/123456@ATSTestDB file=c:/export.dmp
好了,導(dǎo)數(shù)據(jù)得時(shí)候,有可能報(bào)錯(cuò)了。為什么?有兩種主要的原因:
A. 導(dǎo)入的對(duì)象(表,視圖,方法等)原本不屬于當(dāng)前連接的用戶的
B. 導(dǎo)入的對(duì)象在該數(shù)據(jù)庫的指定用戶下已經(jīng)存在
C. 導(dǎo)入的對(duì)象的原本用戶不再這個(gè)數(shù)據(jù)庫里
所有對(duì)象全部導(dǎo)入到指定的賬戶下:
Imp system/123456@ATSTestDB file=c:/export.dmp fromuser=sys touser=system
其中fromuser=sys為.dmp文件里的對(duì)象的原先的owner, touser=system 為作為導(dǎo)入的對(duì)象的新的Owner.
忽略/插入數(shù)據(jù)
Imp system/123456@ATSTestDB file=c:/export.dmp ignore=y
其中ignore=y告訴imp.exe把數(shù)據(jù)直接插入到相應(yīng)對(duì)象(并且如果導(dǎo)入的對(duì)象里面有其他的對(duì)象,如約束,索引等,會(huì)在數(shù)據(jù)插入后被創(chuàng)建)。
2 加載其中的指定表table1,table2
imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2)
3 忽略加載約束
有時(shí)候?qū)?shù)據(jù)進(jìn)來的時(shí)候,我們不需要把它的約束,比如一些外鍵約束等都導(dǎo)進(jìn)來,可以加上參數(shù)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 只加載結(jié)構(gòu),不加載數(shù)據(jù)
如果只要表的結(jié)構(gòu)等定義(約束,觸發(fā)器),那么不要里面的數(shù)據(jù),可以加上參數(shù)rows=N
imp system/123456@ATSTestDB file=C:/export.dmp tables=(table1,table2) rows=N
對(duì)于上述操作登陸操作的對(duì)象system是管理員,如果不是管理員,而是普通用戶,那么這個(gè)用戶必須有創(chuàng)建刪除對(duì)象的權(quán)利,對(duì)象可能包括 表,視圖,方法,存儲(chǔ)過程等等常見的對(duì)象。為什么“可能”包括?因?yàn)檫@個(gè)視導(dǎo)入導(dǎo)出的時(shí)候是否涉及相關(guān)類型的對(duì)象而定。
至此,以上簡(jiǎn)單的Oracle導(dǎo)入導(dǎo)出數(shù)據(jù)的命令掌握了嗎?相信夠用了。
轉(zhuǎn)自:http://tech.ddvip.com/2009-06/1244792593123420.html