CSV на миллион строк: чем его открыть
Предел Excel — 1 048 576 строк. Файл на два миллиона он откроет ровно наполовину и предупредит об этом так, что половина людей предупреждение не заметит. Это опаснее, чем отказ открыть вовсе.
Сначала — не потерять данные
Главная опасность большого CSV не в том, что его тяжело открыть, а в том, что его легко открыть частично и не заметить. Прежде чем что-то считать, убедитесь, что вы видите весь файл: сравните число строк в источнике и в открытом виде.
Быстрый способ узнать точное число строк, не открывая файл: в PowerShell — (Get-Content файл.csv | Measure-Object -Line).Lines. Учтите, что строка шапки тоже считается, а перенос внутри поля в кавычках даст завышенный результат.
Способы, разложенные честно
| Способ | Когда подходит | Чего стоит |
|---|---|---|
| Power Query в Excel | нужно агрегировать и построить сводную | данные грузятся в модель, память растёт; смотреть построчно неудобно |
| Python + pandas | разовая обработка, есть кто напишет код | файл целиком в память; на 5 ГБ понадобится 15–20 ГБ ОЗУ |
| DuckDB | нужен SQL по файлу, есть командная строка | отличный вариант, но это инструмент для тех, кто пишет запросы |
| Текстовый редактор (Notepad++, VS Code) | подсмотреть первые строки | колонок не видно, фильтров нет, на гигабайте тормозит |
| Браузерный просмотрщик | посмотреть, отфильтровать, сверить, выгрузить подмножество | не заменяет аналитический инструмент |
Если задача звучит как «посмотреть и найти», тяжёлая артиллерия не нужна. Если звучит как «пересчитать показатели за год» — нужна, и это DuckDB или база.
Почему большой CSV вообще открывается медленно
У CSV нет оглавления. Чтобы узнать, где начинается миллионная строка, нужно прочитать все предыдущие: перевод строки внутри поля в кавычках не считается концом записи, поэтому «просто искать \n» нельзя.
Отсюда два подхода. Первый — прочитать файл целиком в память и дальше работать быстро (так делают pandas и Excel). Второй — один раз пройти по файлу и запомнить смещения начал строк, а сами строки читать по мере надобности. Второй путь требует одного последовательного чтения и почти не расходует память: для десяти миллионов строк указатель занимает около 80 МБ, а сами данные остаются на диске.
TablesViewer идёт вторым путём — поэтому гигабайтный файл открывается за время, нужное диску его прочитать, а прокрутка не зависит от размера.
Что ещё ломается на больших файлах
- Рваные строки. На миллионе строк почти наверняка найдётся десяток с лишним разделителем. Инструмент должен об этом сообщить, а не молча сдвинуть колонки.
- Смешанные кодировки. Файл, склеенный из нескольких выгрузок, может содержать куски в разных кодировках. Признак — читаемый текст вперемешку с кракозябрами.
- Переносы строк внутри полей. Адреса и комментарии часто содержат перевод строки. Разбор без учёта кавычек превратит одну запись в две.
Частые вопросы
Сколько строк открывает TablesViewer?
Ограничение по строкам — 50 миллионов на файл, по размеру ограничений нет: читаются только видимые записи.
Можно ли выгрузить часть большого CSV в Excel?
Да: примените фильтр и выгрузите результат в XLSX. Помните про предел формата — 1 048 575 строк данных.
Файл в 10 ГБ откроется?
Откроется, но построение указателя строк потребует одного полного чтения файла — по времени это чтение диска, около минуты на быстром SSD.