将Excel文件导入mysql数据库

将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 = finsert 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(rC:Users17954Desktopheros.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 +"),
"
print(text)

即先在Windows系统下获得需要的mysql代码格式,然后直接复制,粘贴到Linux系统下。

#直接一次性多行插入
insert into story(ename,cname,bg,title) value
(),
(),
...
();
经验分享 程序员 微信小程序 职场和发展