1. 程式人生 > 其它 >Excel 生成 SQL 建立語句 create table

Excel 生成 SQL 建立語句 create table

總共兩張表,結構如下:

首先要把表結構轉變為以下的一維結構, excel儲存為 data_model.xlsx

table_name column_name data_type default comment
users uid bigint(10) NULL 使用者ID
users uage int NULL 使用者年齡
users uname varchar(30) NULL 使用者姓名
users udescription varchar(50) NULL 描述
users lut datetime CURRENT_TIMESTAMP 最後更新時間
grades uid bigint(10) NULL 使用者ID
grades subject varchar(30) NULL 科目
grades score decimal(18,2) NULL 分數
grades lut datetime CURRENT_TIMESTAMP 最後更新時間

Python 程式碼儲存為excel2sql_create.py

import pandas as pd
data=pd.read_excel('data_model.xlsx')
data=data.fillna('NULL')
with open('./data_model.sql','w',encoding='utf8') as f:
    table_name=''
    for i,j in data.iterrows():    
        column_line=j.column_name+' '+j.data_type+' DEFAULT '+ j.default+' COMMENT \''+j.comment+'\'\n'
        if j.table_name == table_name:
            f.write('  ,'+column_line)
        else:
            if table_name!='':
                f.write(');\n\n')
            table_name=j.table_name
            f.writelines(['CREATE TABLE '+j.table_name+' (\n'
                         ,'  '+column_line])
    f.write(');')

工作目錄中的檔案: data_model.xlsx, excel2sql_create.py

最後在當前資料夾生成: data_model.sql, 內容是:

CREATE TABLE users (
  uid bigint(10) DEFAULT NULL COMMENT '使用者ID'
  ,uage int DEFAULT NULL COMMENT '使用者年齡'
  ,uname varchar(30) DEFAULT NULL COMMENT '使用者姓名'
  ,udescription varchar(50) DEFAULT NULL COMMENT '描述'
  ,lut datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最後更新時間'
);

CREATE TABLE grades (
  uid bigint(10) DEFAULT NULL COMMENT '使用者ID'
  ,subject varchar(30) DEFAULT NULL COMMENT '科目'
  ,score decimal(18,2) DEFAULT NULL COMMENT '分數'
  ,lut datetime DEFAULT CURRENT_TIMESTAMP COMMENT '最後更新時間'
);