-
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裡面的條件在這些表上面都可以運作。
匯出後,或許發現資料比較大,我們可以用一些壓縮工具對資料進行二次壓縮,例如用winzip, winrar, 7zip等第三方工具。同樣,exp支援一個參數使用者直接對資料進行壓縮: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是管理員,如果不是管理員,而是普通用戶,那麼這個用戶必須有創建刪除物件的權利,物件可能包括表,視圖,方法,預存程序等等常見的物件。為什麼“可能”包括?因為這個視導入導出的時候是否涉及相關類型的物件而定。
至此,以上簡單的Oracle導入匯出資料的指令掌握了嗎?相信夠用了。