Python讀取EXCEL表結(jié)構(gòu)生成DDL

一、說明

近期工作中需要對Excel維護的數(shù)據(jù)庫表表結(jié)構(gòu)進行Oracle的DDL整理,故編寫如下腳本。
該腳本識別固定Excel文件,讀取每個sheet頁的數(shù)據(jù)庫表結(jié)構(gòu)信息后拼接成可執(zhí)行的DDL語句。
注意:控制臺輸出的DDL語句,需要對數(shù)據(jù)類型和最后一個字段的逗號做統(tǒng)一替換處理。

二、邏輯

1、EXCEL格式

image.png

2、Python腳本

import xlrd

data_file = xlrd.open_workbook('tablesDDL.xlsx')

# 查看工作表
data_file.sheet_names()
# print("sheets:" + str(data_file.sheet_names()))

#遍歷所有工作表,獲取對應(yīng)的下標(biāo)位置
for num in range(len(data_file.sheet_names())):
    #按照下標(biāo)讀取對應(yīng)工作表
    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

即可在控制臺輸出對應(yīng)的DDL語句。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容