寫在最前面
由于一些特殊的原因,我們可能需要向oracle中導(dǎo)入大量的dmp文件,我本次導(dǎo)入的dmp文件量為115個(gè),總計(jì)45.4G。
我選擇用python編寫批量導(dǎo)入腳本進(jìn)行導(dǎo)入,不想在plsql中點(diǎn)三四百多次。
你最好準(zhǔn)備一包喝茶瓜子和一杯好茶。導(dǎo)入過程還是很耗資源的,看電腦情況吧,我的電腦在導(dǎo)入的時(shí)候我只能喝茶嗑瓜子~
友情提示:如果你想直接看代碼,可以直接把滾動條拉到最下面。
環(huán)境
1.操作系統(tǒng): window10
2.已經(jīng)安裝oracle服務(wù)端及客戶端,oracle版本:11g
3.python版本:3.6
總的思想
說起來做起來都很簡單。思路是把所有dmp放在一個(gè)文件夾里,之后python遍歷所有文件并執(zhí)行oracle導(dǎo)入命令。
具體實(shí)現(xiàn)
1.首先,oracle的dmp導(dǎo)入命令需要搞明白。命令的形式如下:
imp [username]/[password]@[ip]/[sid] file="[dmp address]" full=y ignore=y
上述命令中,
1.1 [username] [password] 是oracle數(shù)據(jù)庫的用戶名密碼;
1.2 [ip] 是遠(yuǎn)程數(shù)據(jù)庫地址,如果是本地庫,則為127.0.0.1
1.3 [sid]為數(shù)據(jù)庫sid
1.4 [dmp address] 為dmp文件的絕對地址
比如,我的oracle數(shù)據(jù)庫 sid 為orcl,用戶名為 test 密碼為 123,本地庫,dmp文件地址d:\dmp\1.dmp。
那么直接在cmd命令中執(zhí)行如下代碼,可完成1.dmp文件的導(dǎo)入:
imp test/123@127.0.0.1/orcl file="d:\dmp\1.dmp" full=y ignore=y
2.具體代碼,注釋應(yīng)該已經(jīng)足夠明白
import os #引入os包
if __name__ == '__main__':
#遍歷文件夾下所有的dmp文件,其中filename為所有文件、文件夾的名稱。
#因?yàn)槲椅募A下確定都是dmp文件,所以無需進(jìn)行特殊判斷
for filename in os.listdir("D:\dmp"):
# 調(diào)用cmd窗口,并執(zhí)行dmp的導(dǎo)入命令
# 因?yàn)閐mp文件數(shù)據(jù)量太大,我選擇一條一條的去執(zhí)行,就是如此,電腦已經(jīng)打字都卡了
os.system("imp orcl/123456@127.0.0.1/zrr file=\"D:\dmp\\"+filename+"\" full=y ignore=y")
3.執(zhí)行python腳本
我使用vscode進(jìn)行編輯的,python腳本路徑為d:/python/orclImport.py。所以,直接cmd窗口運(yùn)行命令:
python d:/python/orclImport.py
最最后,拿出我們的神器,瓜子和茶,愜意的等著黑窗口執(zhí)行完成吧