Перейти к инструменту
ViewCSV
Без загрузки на сервер

Сжать CSV в gzip или ZIP

Перетащите сюда файл CSV, .gz или .zip
Действие
Байты файла сжимаются как есть, поэтому после распаковки получается точно такой же файл — с той же кодировкой, меткой BOM и концами строк.
Откройте файл, чтобы сжать или распаковать его.

Откройте CSV и выберите gzip или ZIP — сжатый файл скачается, как только будет готов: из orders.csv получится orders.csv.gz или orders.zip. Чтобы сделать обратное, откройте файл .gz или .zip и распакуйте его содержимое. Байты не разбираются и не меняются, поэтому кодировка, разделитель, кавычки, окончания строк и метка BOM возвращаются в точности такими, какими были. Сжатие выполняется в вашем браузере, файл никогда не загружается на сервер.

Как сжать или распаковать CSV

  1. Откройте или перетащите файл. Если имя файла заканчивается на .gz или .zip, инструмент переключается на распаковку; всё остальное сжимается.
  2. Выберите gzip или ZIP и уровень сжатия от 1 до 9. Значение по умолчанию, 6, — привычный баланс между размером и временем.
  3. Запустите задачу. Результат скачается, а инструмент покажет размер до и после и их соотношение.

Gzip или ZIP?

Gzip (.csv.gz)Один сжатый файл в формате из RFC 1952. Утилиты командной строки, хранилища данных и многие конвейеры импорта читают .csv.gz напрямую. Исходное имя файла хранится внутри.
ZIP (.zip)Архив с одним элементом под исходным именем файла. Открывается двойным щелчком в Windows и macOS, поэтому подходит для вложений в письма и для тех, кто не работает с командной строкой.
Уровень сжатия1 — быстрее всего, 9 — максимальные усилия ради меньшего файла. Для обычного CSV разница между 6 и 9 невелика, а для маленького файла её может не быть вовсе.
РаспаковкаИз файла .gz получается один файл, который в нём лежит. Из .zip — все файлы архива; папки пропускаются, а пути папок убираются из имён. Один файл скачивается сразу; если файлов несколько, каждый показан в списке с отдельной кнопкой скачивания.

При сжатии одного и того же файла с одним и тем же уровнем всякий раз получаются одинаковые байты, потому что метки времени в заголовке gzip и в элементах ZIP фиксированы, а не берутся текущими. Поэтому для результата можно считать контрольную сумму или хранить его в системе контроля версий.

Что сохраняется в точности

  • Файл обрабатывается как набор байтов, а не как таблица, поэтому ничего не перекодируется: выгрузка в Windows-1251, Windows-1252 или Shift_JIS, разделитель-точка с запятой, окончания строк CRLF и метка порядка байтов UTF-8 после распаковки остаются без изменений. Ведущие нули и длинные идентификаторы не затрагиваются, потому что значения вообще не читаются.
  • Переносы строк в кавычках и лишние кавычки для сжатия значения не имеют: даже повреждённый CSV сжимается и распаковывается как есть. Чтобы проверить сам файл, воспользуйтесь проверкой CSV.
  • Gzip хранит имя в кодировке Latin-1, как требует RFC 1952, поэтому имя файла на другой письменности — например, на кириллице или по-китайски — может вернуться искажённым. Для таких имён используйте ZIP или переименуйте файл после распаковки.
  • Если в ZIP-архиве два файла с одинаковым именем в разных папках, оба распаковываются под этим именем. Переименуйте их при скачивании.

Ошибки при распаковке и слабое сжатие

  • Это не файл gzip или ZIP. Первые байты файла не совпадают с сигнатурой gzip или ZIP: возможно, это обычный CSV с именем .gz или архив другого типа, например 7z или RAR. Чтобы сжать такой файл, переключитесь на gzip или ZIP.
  • Данные gzip повреждены или неполны. Контрольная сумма или длина, записанные в конце файла, не совпадают — обычно это значит, что скачивание прервалось. Скачайте файл ещё раз.
  • Данные ZIP повреждены или используют неподдерживаемый метод. Распаковать можно только элементы без сжатия и со сжатием Deflate; методы Deflate64, BZIP2 или LZMA не поддерживаются. ZIP-архивы с паролем тоже не поддерживаются — распакуйте их архиватором, который запросит пароль.
  • Сжатый файл почти не стал меньше. CSV с большим числом разных значений, например случайных идентификаторов или хешей, сжимается хуже, чем однообразные данные, а очень маленькие файлы почти ничего не выигрывают, потому что формат добавляет заголовок фиксированного размера. Типизированные столбцовые данные можно уменьшить сильнее, сконвертировав их в Parquet.

Большие файлы и конфиденциальность

Лимита в 25 МБ здесь нет, потому что файл никогда не загружается как таблица: он читается фрагментами по 4 МБ и сжимается или распаковывается потоком. Распаковка останавливается с ошибкой, как только распакованные данные превысили бы 4 ГБ в сумме, — это защищает вкладку от «ZIP-бомб», которые разворачиваются до огромных размеров.

Работа идёт в фоновом обработчике в этой вкладке, кнопка Отмена её останавливает. Ничего не загружается на сервер. Чтобы уменьшить большой файл, разрезав его на части, воспользуйтесь разделением CSV-файлов — оно тоже может скачать части одним ZIP-архивом.

Пример: выгрузка из 12 строк при разных уровнях сжатия

Выгрузка из 12 заказов с точкой с запятой, десятичными запятыми и артикулами с ведущими нулями (показаны первые строки), всего 374 байта. Gzip даёт одни и те же 185 байт на уровнях 1, 6 и 9, потому что файл очень маленький; у ZIP заголовок архива больше. При распаковке любого из файлов возвращаются все 374 байта без изменений.

CSV
order_id;region;sku;qty;amount
SO-1001;North;00123;1;19,90
SO-1002;South;00124;2;38,90
SO-1003;East;00125;3;57,90
SO-1004;West;00123;4;76,90
…
Результат
orders-march.csv.gz   185 bytes (49.5 %), restores to orders-march.csv
orders-march.zip      296 bytes (79.1 %), one entry: orders-march.csv
Restored orders-march.csv   374 bytes, identical to the original

Вопросы и ответы

Можно ли сжать несколько CSV-файлов в один ZIP?

На этой странице — нет: она сжимает по одному файлу. Разделение CSV-файлов скачивает все свои части одним ZIP-архивом, а при распаковке ZIP здесь возвращаются все файлы из архива.

Файл .csv.gz — это всё ещё CSV?

Это CSV, сжатый gzip. Программы с поддержкой gzip — например, gunzip, команды импорта большинства баз данных и библиотеки для работы с данными — читают его напрямую; для остальных его сначала нужно распаковать в .csv, что и делает эта страница.

Меняет ли сжатие мои данные?

Нет. Сжатие gzip и ZIP выполняется без потерь, а этот инструмент вообще не разбирает CSV, поэтому распакованный файл — та же последовательность байтов, что и исходный.

Стандарты и справочные материалы