Как разбить большой файл CSV на несколько файлов JSON с помощью инструмента командной строки Miller?
В настоящее время я использую эту команду Миллера для преобразования файла CSV в файл массива JSON:
mlr --icsv --ojson --jlistwrap cat sample.csv > sample.json
Он отлично работает, но массив JSON слишком велик.
Может ли Миллер разделить вывод на множество меньших файлов JSON
X
ряды каждый?
Например, если в исходном CSV-файле 100 строк, можно ли изменить команду для вывода 10 файлов массива JSON, при этом каждый массив JSON содержит 10 преобразованных строк CSV?
Бонусные баллы, если каждый массив JSON также можно обернуть следующим образом:
{
"instances":
//JSON ARRAY GOES HERE
}
1 ответ
ты мог бы запустить это
mlr --c2j --jlistwrap put -q '
begin {
@batch_size = 1000;
}
index = int(floor((NR-1) / @batch_size));
label = fmtnum(index,"%04d");
filename = "part-".label.".json";
tee > filename, $*
' ./input.csv
У вас будет файл с именем
part-00xx
каждые 1000 записей.