使用pandas将excel数据导入Mysql

有大概几百万行数据,每行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)




你可能感兴趣的:(pandas,Python,MYSQL)