使用pandas将excel数据导入Mysql

6 篇文章 0 订阅
5 篇文章 0 订阅

有大概几百万行数据,每行40多列,要导入MYSQL,之前写了一个逐行读取的,但是速度偏慢,而且代码复杂,看着头晕,今天改用pandas进行读取写入,速度显著见快,而且代码极简洁。过程中也遇到了若干坑,会一一说明

# 先要安装几个库 sqlalchemy, pandas,mysql-connector
from sqlalchemy import create_engine
import pandas as pd
import os
import datetime
starttime = datetime.datetime.now()

# 定义路径
path = r'D:\2'
# 首先打开文件
files = os.listdir(path)
for i in files:
    path1 = path + '\\'+i
    data = pd.read_excel(path1)
    engine = create_engine('mysql+mysqlconnector://root:123456@localhost:3306/test')
    # 上面这句,mysql是数据库类型,mysqlconnector是数据库驱动,root是用户名,123456
    是密码,localhost是地址,3306是端口,test是数据库名称
    
'''
导入到mysql,这里有几个关键点,name是Table的名称,if_exists是指Table如果存在的几
个处理办法,默认是报错,replace是先删后写入,append是添加,chunksize很关键,如
果数据量较大,可以分批写入,chunksize后的数字就是每次写入的行数,可以加快运行速
度,而且如果Table不存在,语句能自动创建,还能根据源数据自动调整Table字段的属
性,效果很好
'''
    data.to_sql(name='test', con=engine,if_exists="append",index=False,chunksize=100)

    print('导入' + i + '成功')

endtime = datetime.datetime.now()
x = endtime - starttime
print(x.seconds)




  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

White_Mountain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值