尝试将一个100多兆的csv文件中的数据放到Mysql数据中,直接用pandas的read_csv()函数读取时报了内存超限的异常,原因是一次读入DataFrame的数据超过了最大接收的限制,用批量处理的方法解决了。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : ImportDataToMysql.py
# @Author: Small-orange
# @Date : 2019-12-13
# @Desc :将Excel中的数据导入到Mysql数据库中
#1.创建数据库连接
#2.测试数据库连接
#3.读入数据
#4.将数据写入数据库
import pandas as pd
from sqlalchemy import create_engine
import time
#创建数据库连接
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/demo01?charset=utf8')
#读取表--测试数据库连接
result = pd.read_sql_table('testdemo_test',con=engine)
#读入Excel中的数据
# fliename = r'C:\Users\cfc\Desktop\数据分析\Python\数据集\tianchi_mobile_recommend_train_user.csv'
data = pd.read_csv(r'C:\Users\cfc\Desktop\数据分析\Python\数据集\tianchi_mobile_recommend_train_user.csv',encoding='gbk',chunksize=100000)
# data.to_sql('BI招聘岗位信息',con=engine,if_exists='append')
for chunk in data:
#将读取的数据写入Mysql
chunk.to_sql('train_user',con=engine,if_exists='append')
print('运行时间:' , time.clock()-start)
print('--success--')
1200多万条数据花了14分钟的样子。
网友评论