记录一次读取1600万 行 X 41列的csv文件。
目标 /环境
文件数据为测试模拟数据,数据大小 9.8G,目标为读取数据,并且写入mysql。
目标文件
运行环境:
python3.6 (64位),pandas,pymysql。
思路
采用pandas内置read_csv方法,分块读取文件,开4个进程写入mysql。
遇到的坑有,memoryerror,这里需要强调!!! 必须把写入过的数据del掉,然后调用gc.collect() 释放内存,否则,一直会出现memoryerror,因为python的垃圾回收机制必须试函数执行完才释放,按照这个思路,不等数据读取完,内存就炸了。
下面上代码。
代码
import pandas as pd
from sqlalchemy import create_engine
from multiprocessing import Pool
import gc
def gets():
"""分块读取文件,其实1,000,000行据说速度最佳。"""
df1 = pd.read_csv(r'C:\\Users\\zq\\Desktop\\Project\\demo_python\\测试2.csv', low_memory=False, chunksize=500000)
return df1
def