四行python代码实现oracle数据库dmp文件批量导入
写在最前面
由于一些特殊的原因,我们可能需要向oracle中导入大量的dmp文件,我本次导入的dmp文件量为115个,总计45.4G。
我选择用python编写批量导入脚本进行导入,不想在plsql中点三四百多次。
你最好准备一包喝茶瓜子和一杯好茶。导入过程还是很耗资源的,看电脑情况吧,我的电脑在导入的时候我只能喝茶嗑瓜子~
友情提示:如果你想直接看代码,可以直接把滚动条拉到最下面。
环境
1.操作系统: window10
2.已经安装oracle服务端及客户端,oracle版本:11g
3.python版本:3.6
总的思想
说起来做起来都很简单。思路是把所有dmp放在一个文件夹里,之后python遍历所有文件并执行oracle导入命令。
具体实现
1.首先,oracle的dmp导入命令需要搞明白。命令的形式如下:
imp [username]/[password]@[ip]/[sid] file="[dmp address]" full=y ignore=y
上述命令中,
1.1 [username] [password] 是oracle数据库的用户名密码;
1.2 [ip] 是远程数据库地址,如果是本地库,则为127.0.0.1
1.3 [sid]为数据库sid
1.4 [dmp address] 为dmp文件的绝对地址
比如,我的oracle数据库 sid 为orcl,用户名为 test 密码为 123,本地库,dmp文件地址d:\dmp\1.dmp。
那么直接在cmd命令中执行如下代码,可完成1.dmp文件的导入:
imp test/123@127.0.0.1/orcl file="d:\dmp\1.dmp" full=y ignore=y
2.具体代码,注释应该已经足够明白
import os #引入os包
if __name__ == '__main__':
#遍历文件夹下所有的dmp文件,其中filename为所有文件、文件夹的名称。
#因为我文件夹下确定都是dmp文件,所以无需进行特殊判断
for filename in os.listdir("D:\dmp"):
# 调用cmd窗口,并执行dmp的导入命令
# 因为dmp文件数据量太大,我选择一条一条的去执行,就是如此,电脑已经打字都卡了
os.system("imp orcl/123456@127.0.0.1/zrr file=\"D:\dmp\\"+filename+"\" full=y ignore=y")
3.执行python脚本
我使用vscode进行编辑的,python脚本路径为d:/python/orclImport.py。所以,直接cmd窗口运行命令:
python d:/python/orclImport.py
最最后,拿出我们的神器,瓜子和茶,惬意的等着黑窗口执行完成吧