Python 根据Excel文件建表

在数据开发中,我们有时会接触到表结构信心存储在Excel文件中,需要我们根据提供的字段建表,此代码就是用Python中的pandas模块,把Excel表转化为DataFrame类型,进而生成建表语句。
这里提供一种写法仅供参考。

import pandas as pd
#1.读取文件路径
path = 'd:/framework/file/tableschema.xlsx'
#2.写入文件路径
input = open('d:/framework/file/createtable.txt','w')
#3.读取数据,指定读取excel文件的sheet页,转换为dataframe
file1 = pd.read_excel(path,sheet_name='sheet2')
#4.选择需要的列内容
file2 = file1[['table_name','table_comments','column_name','column_comments']]
#5.按照表名进行分组,要是有多个可以写成:file2.groupby(['table_name','table_comments'])
file_info =  file2.groupby('table_name')
#6.对表名去重,转换为list类型,方便后续调用
table_names = file2['table_name'].drop_duplicates().tolist()
table_names_len = len(table_names)
for i in range(table_names_len):
    #7.根据分组情况,获取各表的表结构,这里的入参需指定分组的key。
    # 如果按照两列进行了分组,则可以写成:file_info.get_group(['table_name1','table_name2'])
    file_schema = file_info.get_group(table_names[i])
    #8.获取表的列名
    file_columns = file_schema[['column_name','column_comments']]
    #9.去重,获取该表的表名和表注释
    table_name = file_schema.drop_duplicates(subset=['table_name','table_comments'])[['table_name','table_comments']]
    #10.把列和列注释转换为list
    file_column_name = file_columns['column_name'].tolist()
    file_column_comment = file_columns['column_comments'].tolist()
    lens = len(file_column_name)
    #11.初始化schema
    schema = ""
    for j in range(lens):
        #12.最后一个数据,结尾不需要加逗号','
        if j != lens - 1:
            schema = f"{schema}`{file_column_name[j]}` string comment '{file_column_comment[j]}',\n"
        else:
            schema = f"{schema}`{file_column_name[j]}` string comment '{file_column_comment[j]}'\n"
    #12.创建建表语句
    sql = \
        f"create table if not exists {table_name.iloc[0,0]}(\n" \
        f"{schema})comment '{table_name.iloc[0,1]}';\n\n";
    #13.写入文件
    input.write(sql+'\n')

#14.关闭io
input.close()

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值