У меня есть файл csv
, размер которого превышает 1 GB
. Обычно так я конвертирую csv
в table
, используя pandas
.
import pandas as pd
from sqlalchemy import create_engine
file_path = "/path/to/test.csv"
df = pd.read_csv(file_path)
for col in df.columns:
# convert each column values to numeric
df[col] = pd.to_numeric(df[col], errors='coerce')
engine = create_engine('postgresql://username:password@localhost:port/dbname')
df.to_sql("mytable", engine)
Как видите, я загружаю файл csv
, выполняю операции на каждом column
и выгрузите его в table
.
Теперь, так как мой файл очень большой, pandas
не может загрузить его в data frame
. Поэтому в Интернете я нашел решение, в котором говорилось о загрузке data
порциями и выполнении операций Использование pandas для эффективного чтения большого файла CSV без сбоя . Вот что я придумала
file_path = "/path/to/test.csv"
chunksize = 100000
for chunk in pd.read_csv(file_path, chunksize=chunksize, iterator=True, low_memory=False):
columns = chunk.columns
Это дает мне columns
каждого куска. Значит ли размер куска означает, что он читает n
строк одновременно? Я не могу понять, как мне убедиться, что я покрываю все куски и продолжаю добавлять data
к table
так, что в конце я получаю все data
, сброшенные в table
, как я делаю с меньшими csv
файлами?