python 生成批量db2运行语句

下面代码读取xls表的内容(模式名和表名),生成命令语句,便于在命令行批量执行。xls的格式附在文末。
 

import xlrd

xls='C:\\Users\\jacking\\Desktop\\xh1ds.xls'    #xls文件路径,电子表格里有中文也没问题
wb=xlrd.open_workbook(filename=xls)
ws=wb.sheet_by_name('Sheet1')

#c=2
count=0
tschema='SJWH' #数据库表模式名
nc=0
#数据库导出表的命令语句
move_str='nohup db2move DBNAME export -sn %s -tn ' % tschema 
#数据库清空表的命令语句
trun_str_t='db2 \"TRUNCATE TABLE %s.%s immediate\"' % (tschema, '%s') #预留一个%s下面可以二次迭代
trun_str=''

for r in range(1, ws.nrows):#假设xls里第一行是表头,跳过
    #print("(%d, %d)=|%s|"%(r, c, ws.cell(r,c).value))
    
    cellv= ws.cell(r,1).value  #xls里的A列是从0编号的,B列内容是模式名
    if( tschema == cellv.strip()):
        count+=1
        if(nc<10):
            move_str += ws.cell(r,2).value + ','
            trun_str += (trun_str_t % ws.cell(r,2).value.strip())+'\n' 
            nc+=1
        elif(nc==10):#每11个表为一个批次,生成批量执行语句
            move_str += ws.cell(r,2).value + ' &'
            trun_str += (trun_str_t % ws.cell(r,2).value.strip())+'\n'
            nc=0
            print(move_str + '\n')
            print(trun_str + '\n\n')
            move_str='nohup db2move DBNAME export -sn %s -tn ' % tschema 
            trun_str=''
    
if(nc != 0):#若最后一个批次不够11个表,全部打印
    print(move_str[:-1] + ' &\n')
    print(trun_str + '\n\n')
    
print("total lines: %d"%count)  #模式名是'SJWH'的表的个数

猜你喜欢

转载自blog.csdn.net/william_djj/article/details/86763910