緣起
oracle的導出問題一直困惱我很久,我一直沒法找到一個非常好的解決方案,每次都是要麼手動複制資料,要麼部分導出等等,很難有一鍵導出的解決方案,今天得空,特意搜羅了百度和google.來對Oracle的導出做個總結。
吐槽
我不知道為什麼oracle的導出問題一直沒有得到解決,我在導出的時候遇到過多個儲存,比如下面這樣。table auto form contains one or more CLOB。還有其他的比如版本不比對啊,字元集不比對啊等等的錯誤,真的很難用

這個問題的解決方案
關于導入和導出
其實導入和導出是一個問題,困惱我的并不是如何操作導入和導出,而是在操作過程中的各種報錯,我相信,如果你導出不報錯,那麼你導入應該也不是太大的問題。那麼下面就詳細說一下導出。
Oracle中的導出一般可以采用cmd指令的形式導出或者采用PL/SQL工具來進行導出,但PL/SQL工具的導出其實最終也是采用了cmd指令來進行導出的,隻是對指令進行了一次封裝。比如我們采用PL/SQL導出的時候是需要選擇一個exp.exe檔案的,而指令行導出也是借助了這個檔案。
那麼問題來了,這個檔案是什麼東西?我們去哪裡找這個檔案??
我相信上面的問題困惱了很多人,因為它曾經困惱着我。後來經過多方查閱資料大概得出的結論是,這個檔案是Oracle的功能,是需要安裝了Oracle才有的,而筆者在開發過程中一般是裝個精簡版的用戶端,就是下面這個東東辣。。
這個東西啊,是沒有exp.exe這個檔案的,那麼也就是說啊,如果你不裝Oracle,你就沒法用這個功能,你裝Oracle,那更惡心,5-6個服務啟在你電腦上,關鍵解除安裝賊難解除安裝,要删系統資料庫什麼的,而且各個版本系統資料庫又不太一樣,經常解除安裝不幹淨,很煩。
那麼怎麼辦呢??
我們可以用SQL導出啊。怎麼導出?看下面
PL/SQL導出的三種方式差別
我們在PL/SQL導出的時候有三種方式可以選
-
- Oracle Export:導出.dmp檔案,它是二進制檔案,通用性比較好,可以跨平台使用。也是平常使用最多的,但是缺點很明顯,就是要裝了Oracle才可以,塗簡單裝個精簡版用戶端隻能遠端連接配接上資料庫,想導出是行不通的。
- SQL Inserts:看名字就知道,這是通過SQL導出,它的好處在于可以看見sql語句。終于有個肉眼能看懂的了。但是他的缺點也非常明顯,首先适合資料量小的情況,而且不能有大字段内容(blob、clob、long)。不然會報錯table auto form contains one or more CLOB。
- PL/SQL Developer:導出.pde檔案,它是plsql特殊格式,隻有plsql認識它,其它編譯器不認識。而且有大字段内容(blob、clob、long)也會報錯table auto form contains one or more CLOB。
說了這麼多,三種方式都有缺點,那麼就沒有辦法解決了??。
終極方案
某網際網路公司程式員:DBA大哥,能不能幫我導出一份資料,線上等,急。
if(DBA大哥==“好的”){
//線上等吧
}else if(DBA大哥==“滾”){
//在你的機器上裝個Oracle吧,然後用Oracle Export這種方式導出。BUT,這個方式好像需要你的賬号有導出權限,不然,你還是要求DBA大哥
}