Python自动生成MySQL建表语句脚本
1.pycharm工具创建一个python文件
2.把下边python代码复制 到 刚创建的python文件中
# 作者:张航铭
# 时间:2022-05-24import xlrd, os
def convert_type(data_type):"""Normalize MySQL `data_type`"""if 'CHAR' == data_type or 'CLNT' == data_type or 'QUAN' == data_type or 'CUKY' == data_type or 'CURR' == data_type or 'DEC' == data_type or 'INT4' == data_type or 'TIMS' == data_type or 'string' == data_type or 'String' == data_type:return 'varchar'elif 'NUMC' == data_type:return 'numeric'elif 'DATS' == data_type:return 'timestamp'else:return data_type# 在mysql中创建表
def mysql_create(fields):stg_table_name = fields[0]['table_name']columns = []primary_key = []table_name_cn = fields[1]['table_name_cn']for field in fields:table_column_index = ""table_column = ""if field['primary_key'] == 'Y':primary_key.append(field['column_name'])if field['column_name'] == 'id':table_column = '`' + field['column_name'] + '` ' + field['type'] + ' NOT NULL AUTO_INCREMENT ' + 'COMMENT ' + "'" + field['column_exp'] + "'" + ',\n'else:if field['null_key'] == 'N':# if field['primary_key'] == 'Y':# primary_key.append(field['column_name'])# print(primary_key)if field['default_value'] is None or field['default_value'] == '':table_column = '`' + field['column_name'] + '` ' + field['type'] + ' NOT NULL ' + 'COMMENT ' + "'" + field['column_exp'] + "'" + ',\n'else:table_column = '`' + field['column_name'] + '` ' + field['type'] + ' NOT NULL DEFAULT "' + str(field['default_value']) + '" ' + 'COMMENT ' + "'" + \field['column_exp'] + "'" + ',\n'print(field['default_value'])else:table_column = '`' + field['column_name'] + '` ' + field['type'] + ' DEFAULT NULL ' + 'COMMENT ' + "'" + field['column_exp'] + "'" + ',\n'if field['index_key'] == 'Y':table_column_index = 'KEY `idx_dim_' + stg_table_name.replace('.', '_') + '_' + field['column_name'] + '` (`' + field['column_name'] + '`) USING BTREE' + ',\n'# print(stg_table_name)if table_column_index is None:columns.append(table_column)else:columns.append(table_column)columns.append(table_column_index)primary_key_str = "PRIMARY KEY ("for item in primary_key:primary_key_str = primary_key_str + '`' + item + '`, '# print(primary_key_str)columns.append(primary_key_str)stg_create_columns = ''.join(columns)[:-2]# print(stg_create_columns)create_stg_sql = "drop table if exists {};\ncreate table {} (\n{})) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='{}' ;".format(stg_table_name, stg_table_name, stg_create_columns, table_name_cn)# print(primary_key)print(create_stg_sql)return create_stg_sql# print(os.getcwd())
par_path = os.getcwd()
paths = [par_path + '\\']
print('---------------paths-------------------')
print(paths)
for path in paths:for filename in os.listdir(path):print(filename)if filename.endswith(".xlsx") or filename.endswith(".xls"):result_sql = ''print(path)print(filename)print(path + filename)worksheet = xlrd.open_workbook(path + filename)table_names = worksheet.sheet_names()for table_name in range(len(table_names)):sheet = worksheet.sheet_by_index(table_name)nrows = sheet.nrowsfields = []for i in range(1, nrows):res = sheet.row_values(i)desc = {'table_name_cn': res[0],'table_name': table_names[table_name].lower(),'column_exp': res[1],'column_name': res[2].lower(),'type': convert_type(res[3]).upper(),'primary_key': res[4],'null_key': res[5],'index_key': res[6],'default_value': res[7],}fields.append(desc)# print(fields)result_sql += mysql_create(fields) + '\n\n'with open(path + '\\' + filename[:-5] + '.sql', "w", encoding='utf-8') as f:f.write(str(result_sql))
图:
3.打开Excel,创建一个.xls文件
4.把刚创建的.xls文件拷贝到与python文件同级目录位置
5.右键运行python文件
6.运行成功后,建表语句将写入同目录下自动生成的.SQL文件中
7.查看.SQL文件
Python自动生成MySQL建表语句脚本相关推荐
- 关于使用java程序从excel或者数据库中取出建表规则数据,自动生成数据库建表语句(适用于批量建数据库表)
公司开发新系统,需要创建几百个数据库表,建表的规则已经写好放到Excel中,如果手动创建的话需要占用较长的时间去做,而且字段类型的规则又被放到了另一张表,如果手动去一个一个去匹配就很麻烦,所以我先把两 ...
- 自动获取mysql建表语句_脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明...
常规建表语句: CREATE TABLE `test_table` ( `id` int(11) NOT NULL, `name` char(64) NOT NULL, `password` char ...
- mysql分片建表语句_Mysql元数据如何生成Hive建表语句注释脚本详解
前言 本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 最近在将数据从Mysql 等其他关系型数据库 抽取 ...
- mysql hive 建表语句_Mysql元数据如何生成Hive建表语句注释脚本详解
前言 本文主要给大家介绍了关于Mysql元数据生成Hive建表语句注释脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 最近在将数据从Mysql 等其他关系型数据库 抽取 ...
- mysql 建表语句示例_MySQL Create Table语句和示例
mysql 建表语句示例 In this article, I am going to explain the MySQL CREATE TABLE statement with examples. ...
- 三种常用的MySQL建表语句(转)
MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1( ...
- MYSQL建表语句错误:1103-Incorrect table name
如题,使用MYSQL建表语句时发生错误 首先简述一下MySQL建表语句: 举例如下: CREATE table `iauth ` (`iid` varchar(32) NOT NULL COMMENT ...
- 【Json】在线JSON转MySQL建表语句工具
在线JSON转MySQL建表语句工具 在线JSON转MySQL建表语句工具 此工具可以将JSON对象转换成MySQL语句,支持复制和下载. 在开发过程中,使用此工具可以蛮方便的. 当然还有其他工具:( ...
- 在线JSON转MySQL建表语句工具
在线JSON转MySQL建表语句工具 在线JSON转MySQL建表语句工具 JSON:(JavaScript Object Notation, JS对象简谱) 是一种轻量级的数据交换格式.它基于 EC ...
最新文章
- 南通专转本计算机考试几级,江苏专转本考试了解多少?
- day 01 python爬虫原理
- 欧冠淘汰赛第二回合!我厂生死战!!
- .NET6之MiniAPI(十):基于策略的身份验证和授权
- java 马踏棋盘优化_我所知道的十大常用算法之马踏棋盘算法(深度搜索、贪心思想优化 )...
- AppDelegate 方法介绍
- leetcode刷题:求容器中能乘最大多少水
- web.xml 中的listener、 filter、servlet 加载顺序及其详解1
- String replaceAll 方法的问题?
- php判断ie的内核,js判断浏览器版本以及浏览器内核的方法_javascript技巧
- BerkeleyDB
- Android应用程序开发入门
- 【拉普拉斯变换】3. 拉普拉斯逆变换
- shell学习(一)简单示例help用法
- Python---excel筛选
- 不懂面试官想要哪种数据分析师,简历写的再好也没用!文末有福利
- 中学计算机老师资质,2016下半年教师资格证考试中学信息技术备考指导
- 第四题:输入某年某月某日,判断这一天是这一年的第几天?
- 热爱生活,从电影开始
- TCP/UDP端口大全