我爱编程

四行python代码实现oracle数据库dmp文件批量导入

2018-03-02  本文已影响0人  石志不渝

写在最前面

由于一些特殊的原因,我们可能需要向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

最最后,拿出我们的神器,瓜子和茶,惬意的等着黑窗口执行完成吧

转载请注明出处
上一篇下一篇

猜你喜欢

热点阅读