이것은 오래된 스레드이지만 여기에 해결 방법을 덤프하고 싶었습니다. 나는 처음에chunksize
매개 변수를 (10000과 같은 아주 작은 값으로도) 그다지 도움이되지 않았습니다. 메모리 크기에 여전히 기술적 인 문제가있었습니다 (내 CSV는 ~ 7.5Gb였습니다).
지금은 for 루프 접근 방식으로 CSV 파일 청크를 읽고 단계별로 SQLite 데이터베이스에 추가합니다.
import pandas as pd
import sqlite3
from pandas.io import sql
import subprocess
in_csv = '../data/my_large.csv'
out_sqlite = '../data/my.sqlite'
table_name = 'my_table'
chunksize = 100000
columns = ['molecule_id','charge','db','drugsnow','hba','hbd','loc','nrb','smiles']
nlines = subprocess.check_output('wc -l %s' % in_csv, shell=True)
nlines = int(nlines.split()[0])
cnx = sqlite3.connect(out_sqlite)
for i in range(0, nlines, chunksize):
df = pd.read_csv(in_csv,
header=None,
nrows=chunksize,
skiprows=i)
df.columns = columns
sql.to_sql(df,
name=table_name,
con=cnx,
index=False,
index_label='molecule_id',
if_exists='append')
cnx.close()