1、碰到的问题
昨天,碰到一个问题;需要将客户整理的Excel数据,导入MySql数据库的临时表,然后,根据临时表中的数据,更新MySql库中的数据。
2、解决思路
方法一
首先,尝试mysql自带数据导入,我使用的是Mysql8.0,如下图所示,
找到Data Import 打开导入界面,如下图所示:
经验证,发现该数据导入,只支持自己的导出文件,显然无法导入Excel数据。
方法二
开始尝试第二种方法,Navicat for Mysql,
继续下一步,提示必须输入表名,不知道什么原因,最终无法解决。
方法三
前面两条路走不通,想着,需要写程序来读取Excel中的数据。通过Excel写入数据库,这种情况还是很常见的,
于是,考虑自己写一个,方便以后处理数据。
据说,Python处理Excel数据很方便,于是,暂定为用Python来写,经过百度,基本定位为用pandas库。
import pandas as pd
import pymysql
df=pd.read_excel('files/t_tmp.xlsx')#这个会直接默认读取到这个Excel的第一个表单
db = pymysql.connect(host="localhost",
user="****",
password="****",
port=3306,# 端口
database="****",
charset='utf8')
cursor = db.cursor()
for i in df.index.values:#获取行号的索引,并对其进行遍历:
#根据i来获取每一行指定的数据
v_kdkh=df.iloc[i,0]
v_bdh=df.iloc[i,1]
# SQL 插入语句
sql = "INSERT INTO t_tmp(kh, bdh) VALUES ('"+str(v_kdkh)+"','"+str(v_bdh)+"');"
print(sql)
try:
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()