Форматы
Чем открыть CSV файл
Что такое формат CSV, чем открыть его на Windows, Mac и онлайн, как правильно импортировать в Excel с нужным разделителем и кодировкой.
Выгрузили отчёт, лог или базу контактов в CSV — а Excel открывает только часть строк или намертво зависает. Причина почти всегда одна: файл больше, чем таблица способна вместить. Хорошая новость — открыть и обработать даже CSV на 2 ГБ и десятки миллионов строк можно бесплатно, если не пытаться загнать его целиком в Excel. Разбираем рабочие способы: от кнопки в самом Excel до SQL-запроса прямо к файлу.

Коротко: Excel обрезает CSV на 1 048 576 строках, поэтому большой файл нельзя открывать целиком в таблице. Импортируйте только нужное через Power Query («Данные → Из текста/CSV»), задайте SQL-запрос прямо к файлу через бесплатный DuckDB, читайте файл кусками в Python (pandas с chunksize) или просто просмотрите первые строки в CLI (head, less). Для регулярной работы загрузите CSV в базу данных.
Microsoft Excel — это сетка фиксированного размера. Начиная с версии 2007 один лист вмещает максимум 1 048 576 строк и 16 384 столбца. CSV же — это обычный текстовый файл, и строк в нём может быть сколько угодно. Когда данных больше лимита, Excel открывает файл до строки 1 048 576, остальное молча отбрасывает — и вы работаете с неполным набором, даже не подозревая об этом.
Второй барьер — оперативная память. Excel держит весь лист в RAM и раздувает его служебными структурами, поэтому CSV на 500 МБ легко превращается в несколько гигабайт занятой памяти и зависание. Отсюда главный принцип: большой CSV не нужно «открывать» в привычном смысле — его нужно импортировать частично или обрабатывать потоково, не загружая целиком.
Если Excel открыл файл ровно на 1 048 576 строках — это почти наверняка обрезка, а не реальный конец данных. Проверьте число строк в файле отдельно (см. следующий раздел), прежде чем считать итоги.
Что именно лежит внутри CSV и чем он отличается от XLSX — разбираем в отдельном материале «чем открыть CSV». Здесь же сосредоточимся на файлах, которые в таблицу просто не влезают.
Прежде чем выбирать инструмент, узнайте два параметра: сколько в файле строк и в какой он кодировке. Это подскажет, поместится ли выборка в Excel и не превратится ли текст в «крякозябры». Открывать сам файл для этого не нужно — достаточно прочитать его начало.
В Linux и macOS (терминал):
# сколько строк в файле
wc -l data.csv
# первые 5 строк — увидеть заголовки и разделитель
head -n 5 data.csv
# определить кодировку
file -i data.csvВ Windows (PowerShell) начало файла покажет команда:
Get-Content data.csv -TotalCount 5Если в предпросмотре русский текст выглядит как «Ð¯Ð·Ñ‹Ðº» или «????», файл не в UTF-8 — при импорте нужно будет явно указать кодировку (обычно Windows-1251). Как это лечится, подробно описано в статье «крякозябры вместо текста: кодировка файла». Заодно посмотрите на разделитель: в русской локали Excel часто ждёт точку с запятой, а не запятую.
Если результат вам всё же нужен в Excel, не открывайте CSV двойным кликом — воспользуйтесь встроенным движком Power Query. Он читает файл потоково и позволяет отфильтровать, сгруппировать и агрегировать данные ещё до загрузки на лист, поэтому в саму таблицу попадает уже компактный результат, укладывающийся в лимит строк.
Когда нужны не сами записи, а сумма, среднее или количество по категориям, загружайте данные Power Query сразу «только в подключение» и стройте по ним сводную таблицу. Тогда исходные миллионы строк вообще не попадают на лист.
Ограничение метода честное: если после всех фильтров у вас всё равно остаётся больше миллиона нужных строк, Excel их не покажет. В этом случае переходите к инструментам ниже, которые не привязаны к сетке.
Google Таблицы кажутся выходом, но у них свой потолок — 10 миллионов ячеек на документ. Лимит считается как строки × столбцы, поэтому файл с 20 колонками упрётся в стену уже на 500 тысячах строк. Плюс загрузка через «Файл → Импорт» принимает CSV размером примерно до 100 МБ, а файлы крупнее просто не примет.
Вывод: облачные таблицы подходят для «средних» файлов — сотни тысяч строк, не гигабайты. Для по-настоящему больших выгрузок это не решение, и упор стоит делать на инструменты, которые не хранят данные в ячейках.
Самый удобный современный способ работать с большим CSV, не программируя, — бесплатный движок DuckDB. Это одна небольшая программа без установки сервера: она умеет выполнять SQL-запросы прямо к файлу CSV, не загружая его целиком в память. Файл на несколько гигабайт обрабатывается на обычном ноутбуке.
Скачайте один исполняемый файл с сайта проекта, запустите его в папке с данными и обращайтесь к CSV как к таблице:
-- сколько всего строк на самом деле
SELECT count(*) FROM 'data.csv';
-- выборка нужных записей
SELECT * FROM 'data.csv'
WHERE region = 'RU' LIMIT 100;
-- агрегат по категориям
SELECT category, sum(amount) FROM 'data.csv'
GROUP BY category;
-- сохранить компактный результат обратно в CSV
COPY (SELECT * FROM 'data.csv' WHERE amount > 1000)
TO 'result.csv' (HEADER, DELIMITER ',');DuckDB сам определяет типы столбцов и разделитель, а результат легко выгрузить обратно в небольшой CSV, который уже спокойно откроется в Excel. Полное описание чтения CSV есть в официальной документации DuckDB.
Если большие выгрузки нужно обрабатывать не раз в квартал, а каждый день, разовые запросы превращаются в рутину. На этом этапе процесс автоматизируют — настраивают конвейер, который сам разбирает форматы, проверяет данные и складывает результат в базу или продукт. Такую автоматизацию обработки данных проектирует команда разработчиков YuSMP Group: от разбора «сырых» файлов до интеграции с внутренними системами.
Если вам привычен код, библиотека pandas читает большой CSV кусками (чанками) фиксированного размера, обрабатывая по несколько сот тысяч строк за раз. Память при этом не переполняется, потому что весь файл в неё никогда не грузится целиком.
import pandas as pd
total = 0
# читаем файл порциями по 100 000 строк
for chunk in pd.read_csv('data.csv', chunksize=100_000):
total += chunk['amount'].sum()
print(total)Для кириллицы, которая не в UTF-8, добавьте параметр кодировки: pd.read_csv('data.csv', encoding='cp1251', sep=';'). Если нужны только несколько столбцов, укажите их через usecols=[...] — так чтение ускорится и займёт ещё меньше памяти. Для файлов в десятки гигабайт вместо pandas берут «ленивые» движки вроде Polars или того же DuckDB — принцип тот же, но обработка быстрее.
Иногда данные не нужно считать — нужно просто заглянуть внутрь или отдать файл по частям. Тут помогают два подхода.
Разбить на несколько файлов. В Linux и macOS одна команда режет CSV на части по 500 000 строк:
split -l 500000 data.csv part_Получатся файлы part_aa, part_ab и так далее — каждый уже открывается в Excel. Минус: заголовок останется только в первом куске, в остальные его придётся дописать. В Windows то же самое делают бесплатные утилиты-«сплиттеры» CSV.
Просто посмотреть содержимое. Для просмотра гигабайтных текстовых файлов есть специальные редакторы, которые не грузят файл целиком: EmEditor (Windows, платный, но с пробным периодом), а также бесплатные klogg и glogg для больших логов и таблиц. Из командной строки удобно листать через less data.csv, а инструментарий csvkit (csvstat, csvcut) считает статистику по колонкам без Excel.
Большие CSV — это часто выгрузки клиентов, заказов, логов. Онлайн-сервисы «открыть CSV в браузере» отправляют файл на чужой сервер. Для персональных и коммерческих данных работайте только локально — через DuckDB, pandas или десктопный редактор.
| Способ | Для чего | Предел | Навыки |
|---|---|---|---|
| Power Query (Excel) | Фильтр и итоги, результат в Excel | Итог ≤ 1 млн строк | Низкие |
| Google Sheets | Средние файлы в облаке | 10 млн ячеек, ~100 МБ | Низкие |
| DuckDB | SQL-выборки и агрегаты по файлу | Десятки ГБ | Базовый SQL |
| Python / pandas | Обработка и расчёты в коде | Ограничена диском | Код |
| split + просмотрщик | Разрезать или просто посмотреть | Любой размер | Средние |
Практическое правило: нужен результат в привычной таблице — Power Query; нужно быстро посчитать по большому файлу без кода — DuckDB; файл встроен в регулярный процесс — Python или база данных. А чтобы после выборки перегнать результат в другой формат, пригодятся инструменты для работы с файлами.
Лист Excel вмещает максимум 1 048 576 строк. Если в CSV строк больше, программа загружает файл до этого предела, а остальное молча отбрасывает. Проверить реальное число строк можно командой wc -l или через DuckDB запросом SELECT count(*).
Бесплатно: скачайте DuckDB и выполните SQL-запрос прямо к файлу, либо прочитайте его кусками в Python через pandas с параметром chunksize. Оба способа не грузят файл в память целиком и справляются с гигабайтными выгрузками.
Только средний. Лимит Google Sheets — 10 млн ячеек (строки × столбцы), а импорт принимает файлы примерно до 100 МБ. Для гигабайтных выгрузок этого не хватит.
Проще всего через DuckDB или SQLite: одной командой создаёте таблицу из файла (CREATE TABLE t AS SELECT * FROM 'data.csv'), после чего к данным можно обращаться SQL-запросами без ограничений таблиц Excel.
Файл не в UTF-8 — чаще всего в Windows-1251. При импорте через Power Query или pandas явно укажите кодировку. Подробный разбор — в статье о кодировках текстовых файлов.
В Linux и macOS команда split -l 500000 data.csv part_ нарежет файл на части по 500 000 строк. В Windows это делают бесплатные утилиты-сплиттеры CSV. Учтите, что заголовок останется только в первой части.