Oracle Imp and Exp (导入和导出) 数据 工具使用
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)然你連接上去的賬戶要對相應(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%'\"
斜杠 “\” 后面跟冒號是為了轉(zhuǎn)義字符冒號” “ “用的,因?yàn)楹竺媸且粭l條件查詢語句。Query參數(shù)只能指定一個(gè),如果Query要為多張表,所以同樣,tables里面也只能有一張表,或者多張表,然后query里面的條件在這些表上面都可以運(yùn)行。否則只好多寫幾條exp語句了。
導(dǎo)出后,或許發(fā)現(xiàn)數(shù)據(jù)比較大,我們可以用一些壓縮工具對數(shù)據(jù)進(jìn)行二次壓縮,例如用winzip, winrar, 7zip等第三方工具。同樣,exp支持一個(gè)參數(shù)用戶直接對數(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)入的對象(表,視圖,方法等)原本不屬于當(dāng)前連接的用戶的
B. 導(dǎo)入的對象在該數(shù)據(jù)庫的指定用戶下已經(jīng)存在
C. 導(dǎo)入的對象的原本用戶不再這個(gè)數(shù)據(jù)庫里
所有對象全部導(dǎo)入到指定的賬戶下:
Imp system/123456@ATSTestDB file=c:\export.dmp fromuser=sys touser=system
其中fromuser=sys為.dmp文件里的對象的原先的owner, touser=system 為作為導(dǎo)入的對象的新的Owner.
忽略/插入數(shù)據(jù)
Imp system/123456@ATSTestDB file=c:\export.dmp ignore=y
其中ignore=y告訴imp.exe把數(shù)據(jù)直接插入到相應(yīng)對象(并且如果導(dǎo)入的對象里面有其他的對象,如約束,索引等,會(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
對于上述操作登陸操作的對象system是管理員,如果不是管理員,而是普通用戶,那么這個(gè)用戶必須有創(chuàng)建刪除對象的權(quán)利,對象可能包括 表,視圖,方法,存儲(chǔ)過程等等常見的對象。為什么“可能”包括?因?yàn)檫@個(gè)視導(dǎo)入導(dǎo)出的時(shí)候是否涉及相關(guān)類型的對象而定。
至此,以上簡單的Oracle導(dǎo)入導(dǎo)出數(shù)據(jù)的命令掌握了嗎?相信夠用了。
轉(zhuǎn)載于:https://www.cnblogs.com/alexweng/p/4430470.html
總結(jié)
以上是生活随笔為你收集整理的Oracle Imp and Exp (导入和导出) 数据 工具使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PowerMock与EasyMock的应
- 下一篇: iOS富文本