一、说明
近期工作中需要对Excel维护的数据库表表结构进行Oracle的DDL整理,故编写如下脚本。
该脚本识别固定Excel文件,读取每个sheet页的数据库表结构信息后拼接成可执行的DDL语句。
注意:控制台输出的DDL语句,需要对数据类型和最后一个字段的逗号做统一替换处理。
二、逻辑
1、EXCEL格式
image.png2、Python脚本
import xlrd
data_file = xlrd.open_workbook('tablesDDL.xlsx')
# 查看工作表
data_file.sheet_names()
# print("sheets:" + str(data_file.sheet_names()))
#遍历所有工作表,获取对应的下标位置
for num in range(len(data_file.sheet_names())):
#按照下标读取对应工作表
sheet = data_file.sheet_by_index(num)
# 拼接建表语句
print("CREATE TABLE "+sheet.cell_value(1,0)+"."+sheet.cell_value(1,1)+"(")
count = 0
for i in range(sheet.nrows):
if count >= 1:
# row = sheet.row_values(i)
column_name = sheet.cell_value(i, 4)
data_type = sheet.cell_value(i,6)
data_type_length = sheet.cell_value(i,7)
print("\t"+column_name+" "+data_type+"("+str(data_type_length)[0:-2]+"),")
count += 1
print(");")
count2 = 0
#拼接字段注释和表注释
for j in range(sheet.nrows):
if count2 >= 1:
# row = sheet.row_values(i)
user_name = sheet.cell_value(1, 0)
table_name = sheet.cell_value(1, 1)
column_name = sheet.cell_value(j, 4)
column_comment = sheet.cell_value(j, 5)
print("COMMENT ON COLUMN "+user_name+"."+table_name+"."+column_name+" IS "+"'"+column_comment+"';")
count2 += 1
table_comment = sheet.cell_value(1, 2)
print("COMMENT ON TABLE "+user_name+"."+table_name+" IS "+"'"+table_comment+"';")
num += 1
即可在控制台输出对应的DDL语句。
网友评论