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.nrows
fields = []
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文件
print("创建数据库失败:case%s"%e)4、插入表数据、查询表数据、更新表数据、#如果存在student表,则删除。print("创建数据库成功")#创建student表。
$mycmd -e "drop database if exists db_enterprise_$db_i;"
$mycmd -e "CREATE DATABASE db_enterprise_$db_i DEFAULT CHARACTER SET utf8
外连接查询:外连接分为左外连接、右外连接、和全外连接。左外连接是左边的表不加限制,里面的数据全部显示出来,而右边则是符合条件的才显示,不符合条件的不显示。右外连接就是和左外连接反过来,右边的表数据全部显示,左边的表则符合条件的显示。不符合条件的不显示。全外连接是两张表都不加限制,将两张表的数据全部显示出来,不过
mysql
并不支持全外连接,所以无法在
mysql
数据库里使用全外连...
简介项目中大部分情况下都是使用
MySQL
数据,而且主要使用的数据库类型是char、varchar、date、datetime、timestamp、int、tinyint等几种常见的数据类型;而且进行表设计时,一般都要出一份表设计文档,例如表设计模板如下因为有了如此标准的表设计文档,我们就可以通过解析xlsx生成数据的
建表语句
。pom文件引入主要引入解析xlsx的poi、日志的logback类库&l...
print("创建数据库失败:case%s"%e)4、插入表数据、查询表数据、更新表数据、#如果存在student表,则删除。print("创建数据库成功")#创建student表。
最近接了一个小项目,需要使用数据库来处理后台的数据,虽然此前有下载安装过
MySQL
,但是很遗憾的是当时并没有花很多时间,也就导致数据库基本没学明白,正好趁这次机会来好好学习一下
MySQL
。一般程序运行,产生的数据都是存在内存当中,当程序终止的时候,通常要写入文件保存到磁盘,而数据库就是一种便捷地交互大量数据的方式,尤其是查找功能的实现。因此,简单来说,数据库就是程序便捷存取大量数据的地方。数据库有很多类型,但在Windows端比较推荐的是
MySQL
和SQLite。