面对以各市县为独立用户的多个Oracle数据库系统的DMP备份文件,审计工作量大,重复性工作多。笔者探索利用Python语句实现各市县GFMIS系统Oracle数据库备份文件的批量导入,具体步骤和部分关键程序语句如下: 整理待导入的DMP备份文件,地区数据命名规则采用“具体地名名称缩写+GFMIS+年度+_采集时间.DMP”,省级数据命名规则为“GFMIS+年度+_采集时间.DMP”。通过调用Python os库的文件函数功能,实现对指定文件夹内后缀名为“.DMP”文件的遍历和获取文件名称。变量list为存储所有文件名称的集合。通过cx_Oracle库连接Oracle数据库,调用execute函数执行SQL语句,完成建立表空间、用户、授权等操作。 以遍历到的“.DMP”文件名称前缀为用户名创建Oracle用户,密码统一设定为“abc”,并对用户进行权限授权。 for i in range(0,len(list): filepath =os.path.join(filedir,list[i]) if os.path.splitext(list[i])[1]=='.DMP': sql="CREATE user "+os.path.splitext(list[i])[0]+"identified by abc default TABLESPACE GFMIS_SYS_DATA QUOTA UNLIMITED ON GFMIS_LOB_DATA" cr.execute(sql) 调用Python os库的system函数执行impdp数据泵导入命令,将不同的备份文件导入不同用户。 impcmd ="impdp userid='"+os.path.splitext(list[i])[0]+"/abc as sysdba' directory=impdp_dir dumpfile="+list[i]+"logfile="+list[i]+".log remap_schema="+os.path.splitext(list[i])[0]+":"+os.path.splitext(list[i])[0] os.system(impcmd) 最后调用cr.close()和db.close()关闭数据库连接。