思路:用python读取配置库,读取配置,判断sqlldr参数(如direct,append等),写ctl文件,用python的os.system(cmd)直接运行。直接获取linux的返回值判断程序运行结果,从日志里查找关键字,获取运行信息。
sqlldr执行格式:
sqlldr %s/%s@10.238.100.236/xjbidb control=%s log=%s bad=%s discard=%s
遇到的问题:1.如果在ctl里设定了errors(运行错误记录数,默认50),并且文件缺失有错误记录并不超过设置,返回码为2,如果没有错误记录,返回码为0.
2.在日志里搜索load记录值时,如果记录值小于10(好像),日志里会显示"6 Row successfully loaded",而如果记录值大于10,会是"6 Rows successfully loaded"。
re.search('(.*?)Row(.*?) successfully loaded.', ctl_log)
3.因为os.system()的返回值和linux值之间要进行转换,所以判断前,先要作转换
res = os.system(cmd_str)
if (res >> 8 == 0):
.
.
.
(待续)