首页 > 数据库 >Mest SQL(1)---利用Python将Excel数据表导入MySQL数据库

Mest SQL(1)---利用Python将Excel数据表导入MySQL数据库

时间:2022-11-19 11:32:48浏览次数:38  
标签:index tab insert Python list 数据表 mytablehead str MySQL

【最终呈现效果】

Mest SQL(1)---利用Python将Excel数据表导入MySQL数据库_代码实现

【原始Excel数据表】

Mest SQL(1)---利用Python将Excel数据表导入MySQL数据库_sql_02

【代码实现及注释】

import pandas as pd
import time
import re
ti = time.strftime('%Y_%m_%d_%H%M%S',time.localtime())

myexcel=r'G:\Mest\Mest Property Sample.xlsx' #Excel的数据源
my_list=pd.read_excel(myexcel,sheet_name=None)
tab_list = []
for x in my_list.keys():
tab_list.append(x)
print(tab_list) #打印出各个表名

j=0
while j<len(tab_list): #转换为SQL语句
mycolumn=pd.read_excel(myexcel,sheet_name=tab_list[j],names=None).columns.tolist()
mytablehead=mycolumn
eachcolumn = pd.read_excel(myexcel, sheet_name=tab_list[j], usecols=mycolumn, names=None).values.tolist()
mycolumn2=re.sub("'","",str(mycolumn))
for x in mytablehead:
if 'ID' in str(x):
mytablehead.insert(mytablehead.index(x), str(x)+str(' int'))
mytablehead.pop(mytablehead.index(x))
elif 'Notes' in str(x):
mytablehead.insert(mytablehead.index(x), str(x) + str(' varchar(10000)'))
mytablehead.pop(mytablehead.index(x))
else:
mytablehead.insert(mytablehead.index(x), str(x) + str(' char(100)'))
mytablehead.pop(mytablehead.index(x))
mytablehead2=re.sub("'","",str(mytablehead))
myoutput = r'G:/Mest/sql_script_' + ti + '.sql'
myfile = open(myoutput, mode='a', encoding='utf-8')
myfile.write('CREATE TABLE '+str(tab_list[j])+' ('+str(mytablehead2)[1:-1]+');')
for x in eachcolumn:
for i in x:
if '00:00:00' in str(i):
x.insert(x.index(i), str(i)[0:10])
x.pop(x.index(i))
elif type(i)==int or type(i)==float:
x.insert(x.index(i), str(i))
x.pop(x.index(i))
myfile.write('INSERT INTO '+tab_list[j] +' (' + str(mycolumn2)[1:-1] + ')')
myfile.write('VALUES(' + str(x)[1:-1] + ');')
print('INSERT INTO '+tab_list[j] +' (' + str(mycolumn2)[1:-1] + ')')
print('VALUES(' + str(x)[1:-1] + ');')
j+=1
print('source ' + str(myoutput)+';')

【生成的SQL脚本】

Mest SQL(1)---利用Python将Excel数据表导入MySQL数据库_sql脚本_03

【执行语句】

source G:/Mest/sql_script_2022_11_19_104956.sql;

标签:index,tab,insert,Python,list,数据表,mytablehead,str,MySQL
From: https://blog.51cto.com/dcboy/5870354

相关文章

  • Mysql历史介绍及多版本安装
    目录一、数据库概述1.1什么是数据库1.2数据库的分类1.3Mysql企业版本选择二、Windows多版本部署Mysql数据库2.1mysql5.6版本安装2.2mysql5.7版本安装2.3mysql8.0版......
  • python的ddt
    作用把测试数据和用例代码进行分离,通过外部数据去生成测试用例,方便后期的维护,以及测试数据的管理底层原理1、保存测试数据2、遍历测试数据,生成测试方法ddt的使用......
  • MYSQL
    创建数据表 CREATETABLEIFNOTEXISTSstudent(idINT(4)NOTNULLAUTO_INCREMENTCOMMENT'学号',NAMEVARCHAR(30)NOTNULLDEFAULT'小明'COMMENT'姓名',PRI......
  • 提升mysql服务器性能(存储引擎与配置参数设置)
    服务层实现了与引擎无关的性能 frm用于记录结构 使用表锁 使用共享所和读锁支持全文索引 前缀索引  如果不对表进行操作尽可以进行压缩; myisamchk 命令行工具需......
  • python 3 open() default encoding
    python3open()defaultencoding回答1ThedefaultUTF-8encodingofPython3onlyextendstobyte->strconversions.open()insteadusesyourenvironmenttoc......
  • Mysql命令行使用source执行.sql文件报错
    问题描述在windows上,使用命令行登录mysql,使用source命令执行xxx.sql文件,报错。将文件里的内容粘贴在命令行可以正确执行。原因连接mysql时没有设置编码解决mysql-u......
  • 2022-11-17 mysql列存储引擎-聚合中间缓存结果-分析
    摘要:mysql列存储引擎-聚合中间缓存结果-分析DML:TPCH表使用Q16selectp_brand,p_type,p_size,count(distinctps_suppkey)assupplier_cntfrompartsupp,partwh......
  • How to run python interactive in current file's directory in Visual Studio Code?
    Howtorunpythoninteractiveincurrentfile'sdirectoryinVisualStudioCode?问题Whenexecuting"RunSelection/LineinPythonTerminal"commandinVSCod......
  • 解决MySQL使用limit偏移量较大效率慢的问题
    备注:第二个方法妥妥的问题描述在MySQL中,LIMITOFFSET偏移量特别大时,效率会非常低如果说LIMIT1000,10,一个偏移量很小的值,一般是没有问题的。但是,比如说,LIMIT10000000,10......
  • [oeasy]python0017_解码_decode_字节序列_bytes_字符串_str
    ​ 解码decode回忆上次内容code就是码最早也指电报码后来有各种编码、密码、砝码、条码都指的是把各种事物编个号encode就是编码编码就是给事物编个号......