Как разбить большой CSV-файл на несколько более мелких в macOS?
При работе с большими файлами CSV, можно столкнуться с зависаниями программ или даже операционной системы. При обработке таких файлов при помощи самописных скриптов, также возникнет проблема большого потребления оперативной памяти.
CSV-файл до разбития на более мелкие части
Для упрощения работы с данными - можно воспользоваться следующими методами разбития CSV:
разбитие по количеству строк в файле;
разбитие по размеру файла;
Разбитие CSV файла по количеству строк:
split -l 100 data.csv
Команда split разобьет выбранный csv-файл (data.csv в примере). При помощи -l 100 мы указываем, что хотим разбивать файл каждые 100 строк. Последний созданный файл будет содержать количество строк, которое останется (не более 100, в зависимости от количества строк в исходном файле). Имена новым файлам даются автоматически.
Разбитый CSV файл при помощи split -l 100 filename.csv
Можно заметить, что созданные файлы не имеют расширения *.csv. Чтобы исправить это, выполним следующую команду в терминале:
for i in *; do mv "$i" "$i.csv"; done
Эта команда проставит расширение .csv для каждого файла из директории. Обратите внимание, что наш исходный файл также будет под влиянием данной команды. added_csv_extension.jpg63.1 КБ
Также стоит отметить, что размер последнего файла зависит от того, сколько строк осталось.
Размер полученных файлов
Разбитие CSV файла по размеру файла:
split -b 1m large_db.csv
В этой команде -b говорит о том, что мы хотим разбивать файлы по байтам. За ним следует аргумент 1m (1 миллион байтов). В результате выполнения этой команды мы получим файлы размером 1 мегабайт каждый:
Файлы по 1мб
Если исходный CSV-файл слишком большой - количества генерированных имен для файлов будет недостаточно и выполнение команды прервется:
split -b 1m large_db.csv
split: too many files
Для этого нам нужно либо увеличить размер файлов/увеличить количество строк в них. Либо же добавить параметр suffix-length, который сделает имена получаемых файлов длиннее:
split -b 1m -a 10 large_db.csv
suffix-length
Добавляем -a и задаем длину названия файла. Все довольно просто.
При выполнении split команды будьте внимательны:
убедитесь что используя терминал вы перешли в нужную директорию;
сделайте резервную копию исходного файла;
помните, что выполняя команду массового переименования файлов (добавления csv расширения) - команда повлияет на все файлы в текущей директории.
theglitchy.com использует файлы cookie, чтобы предоставлять вам наилучшие услуги на нашем веб-сайте, измерять посещаемость и эффективность, а также размещать рекламу. Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie. Подробнее