将Excel文件导入数据库
1. 创建所需数据库和表
create database hero;
use hero;
create table story(
ename int,
cname char(8),
bg varchar(200),
title char(8)
);
desc story;
2. 将表导入数据库
2.1 windows系统
import pymysql
import numpy as np
import pandas as pd
import xlwings as xw
# 连接数据库
db = pymysql.connect(host='127.0.0.1', user='root', password='密码',dabase='数据库名')
conn = db.cursor() # 获取指针以操作数据库
#1.建立excel表连接
wb = xw.Book('文件名')
#2.实例化工作表对象
sheet = wb.sheets["Sheet1"]
#3.读取单元格内容
for i in range(1,111):
ename = sheet.range(('A'+str(i))).value
cname = sheet.range(('B'+str(i))).value
title = sheet.range(('C'+str(i))).value
bg = sheet.range(('D'+str(i))).value
sql = f'insert into story(ename,cname,bg,title) values ("{ename}","{cname}","{bg}","{title}")'
conn.execute(sql)
db.commit()
conn.close()
db.close()
2.2 Linux系统
经过尝试发现xlwings一般情况下在Linux系统无法运行,经查找解决方法也不容易,所以采用另外一种取巧的方法。
import xlwings as xw
#1.建立excel表连接
wb = xw.Book(r'C:\Users\17954\Desktop\heros.xlsx')
#2.实例化工作表对象
sheet = wb.sheets["Sheet1"]
text = ""
#3.读取单元格内容
for i in range(1,111):
ename = sheet.range(('A'+str(i))).value
cname = sheet.range(('B'+str(i))).value
title = sheet.range(('C'+str(i))).value
bg = sheet.range(('D'+str(i))).value
text += "(" + str(int(ename)) +",'" + cname + "','" +bg+"','"+title +"'),\n"
print(text)
即先在Windows系统下获得需要的mysql代码格式,然后直接复制,粘贴到Linux系统下。
#直接一次性多行插入
insert into story(ename,cname,bg,title) value
(),
(),
...
();