Откройте CSV и выберите, как его разрезать: фиксированное число строк в файле, максимальный размер файла, количество файлов или отдельный файл для каждого значения столбца. Каждая часть — побайтовая копия исходных записей с повторённым сверху заголовком, поэтому кавычки, окончания строк, кодировка и метка BOM остаются прежними. Посмотрите список частей, а затем скачайте их по одной или все вместе в ZIP-архиве. Файлы больше 25 МБ тоже делятся, и ничего не загружается на сервер.
Как разделить CSV-файл
- Откройте файл
.csv,.tsvили.txt, перетащите его на инструмент или вставьте строки. Первая строка считается строкой заголовков. - Выберите способ разделения и укажите число строк, максимальный размер в байтах, количество файлов или столбец.
- В предпросмотре проверьте имя, число строк и размер каждого файла, затем скачайте одну часть или все сразу одним ZIP-архивом.
Части называются по исходному файлу: из orders.csv получаются orders-part-001.csv, orders-part-002.csv… Файл .tsv сохраняет расширение .tsv. Архив называется orders-parts.zip.
Способы разделения
| Строк в файле | В каждой части указанное число строк данных, в последней — остаток. Заголовок не считается. |
|---|---|
| Максимальный размер файла | Каждая часть заполняется целыми записями, пока следующая не превысила бы размер; размер считается в байтах вместе с заголовком и меткой BOM. Запись никогда не разрезается пополам, поэтому одна запись больше лимита останавливает разделение с ошибкой, в которой она названа. |
| Количество файлов | Сначала инструмент считает записи, затем кладёт в каждую часть одинаковое число строк с округлением вверх (не больше 1000 файлов). Из-за округления файлов может получиться меньше, чем запрошено: 5 строк на 4 файла дают части по 2, 2 и 1 строке. |
| Файл на каждое значение столбца | Строки группируются по точному значению выбранного столбца, и каждое значение даёт файл orders-West.csv, orders-East.csv… в порядке первого появления. Внутри каждой части строки сохраняют исходный порядок. Не больше 1000 различных значений. |
| Повторять заголовок в каждой части | По умолчанию включено. Отключите, чтобы заголовок был только в первой части, — например, если части потом снова будут склеены. |
Как обрабатываются сложные данные
- Значения в кавычках с разделителем или переносами строк остаются внутри своей записи, которая читается по RFC 4180. Многострочный адрес никогда не попадёт в две разные части.
- Записи копируются как исходные байты, без повторного разбора и записи: кавычки, окончания строк и ведущие нули сохраняются в точности. Метка порядка байтов UTF-8 в начале файла записывается в начало каждой части, так что Excel по-прежнему распознаёт каждую как UTF-8.
- Пустые строки между записями пропускаются. Если в конце последней записи нет переноса строки, часть получает окончание строки, принятое в файле.
- Значения столбца сравниваются в точности:
Westиwestпопадут в разные файлы. Многие файловые системы не различают регистр, поэтому второй файл получит имяorders-west-2.csv, а не перезапишет первый. - В именах файлов символы вроде
/ \ : * ? " < > |заменяются на_, имена обрезаются до 60 символов, а пустое значение записывается какorders-empty.csv. Какое значение содержит каждый файл, точно видно в столбце значений в предпросмотре.
Какие кодировки можно разделять
Разделение работает прямо с байтами, что безопасно для UTF-8 и однобайтовых кодировок, например Windows-1252 или Windows-1251. Файлы UTF-16 так разделить нельзя: сначала сохраните их в UTF-8, например с помощью формата CSV. Файлы в Shift_JIS, GB18030, GBK и Big5 можно разделить, если разделитель — запятая, точка с запятой или табуляция, но не вертикальная черта: в этих кодировках байт вертикальной черты может встретиться внутри символа. Если файл разделить нельзя, инструмент предупредит об этом до начала работы.
Устранение неполадок
- Одна запись больше выбранного размера части. Увеличьте максимальный размер: в него должны помещаться заголовок и самая большая запись.
- Такое разделение дало бы больше 1000 файлов. Увеличьте число строк в файле или размер либо выберите меньшее количество файлов.
- В столбце больше 1000 различных значений. Разделите по более общему столбцу — например, по региону, а не по клиенту — или сначала отфильтруйте файл.
- Значение в кавычках не закрывается. Где-то в файле открыта кавычка, которая так и не закрывается, поэтому весь остаток файла стал бы одной записью. Найдите её с помощью проверки CSV.
Большие файлы и конфиденциальность
Разделение не ограничено 25 МБ. Для файла больше показывается предпросмотр первых 200 строк, а при разделении весь файл читается фрагментами по 8 МБ, так что памяти расходуется немного. Части хранятся как файловые данные браузера, пока вы их не скачаете; на практике предел — свободное место, доступное браузеру.
Разделение выполняется в фоновом обработчике в этой вкладке, кнопка Отмена его останавливает. Файл никогда не отправляется на сервер. Чтобы собрать части обратно, воспользуйтесь объединением CSV-файлов; чтобы уменьшить файл, не разрезая его, — сжатием CSV.
Пример
Небольшая выгрузка заказов с окончаниями строк CRLF (здесь показаны как обычные переносы) и многострочной заметкой, разделённая на части по 2 строки с повторением заголовка. Перенос строки в кавычках остаётся внутри заказа A2, а последняя запись, у которой во входных данных не было переноса строки, получает окончание CRLF, принятое в файле.
order_id,region,note A1,West,ok A2,East,"two lines" A3,West,"a, b" A4,,late A5,east,ok
orders-part-001.csv (2 rows) order_id,region,note A1,West,ok A2,East,"two lines" orders-part-002.csv (2 rows) order_id,region,note A3,West,"a, b" A4,,late orders-part-003.csv (1 row) order_id,region,note A5,east,ok
Вопросы и ответы
Будет ли каждая часть правильно открываться в Excel?
Да, если правильно открывался исходный файл: у каждой части тот же заголовок, разделитель и кодировка, а метка порядка байтов UTF-8 сохраняется, если она была в исходном файле.
Можно ли разделить по столбцу, если нет строки заголовков?
Нет. Первая строка всегда читается как заголовок, а столбец выбирается по его названию. Сначала добавьте строку заголовков, например в редакторе CSV.
Почему файлов получилось меньше, чем я просил?
При разделении на заданное количество файлов в каждую часть кладётся одинаковое число строк с округлением вверх, поэтому строки могут закончиться раньше последнего файла. 10 строк на 4 файла дают 3, 3, 3 и 1; 10 строк на 6 файлов — пять файлов по 2 строки.