Как парсить большие CSV/Excel файлы на Python без OOM?

Вопрос: как парсить большие CSV/Excel файлы на Python без OOM?

Линия поддержки
Линия поддержки Ответы на вопросы пользователей
23 января 2026

Показали, как реализовать потоковую обработку массивов данных на Python, используя современные инструменты Pandas для быстрой загрузки в БД.

Изображение записи

Комментарий пользователя

Здравствуйте! Нужна утилита, которая читает CSV с миллионами строк и пишет в БД. Pandas не влазит в память — что делать?

Андрей Румянцев Пользователь

Ответ специалиста

Здравствуйте, Андрей! Главное — не пытайтесь загрузить весь файл в память.   Читайте данные построчно или чанками и сразу пишите в БД.   

Базовый вариант — стандартный модуль csv и пакетная вставка:

  • Игнатий Царев

    Игнатий Царев

    Младший бэкенд-разработчик Python


      import csv
import psycopg2

def process_stream(path, dsn, batch_size=1000):
    conn = psycopg2.connect(dsn)
    cur = conn.cursor()
    with open(path, newline='', encoding='utf-8') as f:
        reader = csv.reader(f)
        next(reader) 
        batch = []
        for row in reader:
            batch.append(row)
            if len(batch) >= batch_size:
                cur.executemany("INSERT INTO table (a,b,c) VALUES (%s,%s,%s)", batch)
                batch.clear()
        if batch:
            cur.executemany("INSERT INTO table (a,b,c) VALUES (%s,%s,%s)", batch)
        conn.commit()
    cur.close()
    conn.close()

Если важна скорость, для PostgreSQL лучше использовать COPY вместо executemany — это обычно на порядок быстрее. Логика та же: читаем файл как поток, база сама оптимально проглатывает данные.

Если удобнее работать через pandas, не отказывайтесь от нее полностью, а добавьте чтение чанками:


      import pandas as pd

for chunk in pd.read_csv('big.csv', chunksize=100_000):
    обработка(chunk)
    # запись в БД батчами

Excel‑файлы лучше конвертировать в CSV (через pandas.read_excel(...).to_csv(...)) или читать по листам и строкам.

Если ответ помог — добро пожаловать в Академию Selectel. Регулярно публикуем гайды по ЯП, настройкам и разным технологиям.