如何使用 Miller 命令行工具将大型 CSV 文件拆分为多个 JSON 文件?

How to split a large CSV file into multiple JSON files using the Miller command line tool?

我目前正在使用此 Miller 命令将 CSV 文件转换为 JSON 数组文件:

mlr --icsv --ojson --jlistwrap cat sample.csv > sample.json

工作正常,但 JSON 数组太大。

Miller 能否将输出分成许多较小的 JSON 文件,每个文件有 X 行?

例如,如果原始 CSV 有 100 行,我可以修改命令以输出 10 个 JSON 数组文件,每个 JSON 数组包含 10 个转换后的 CSV 行吗?

如果每个 JSON 数组也可以像这样包装,则加分:

{
  "instances": 

//JSON ARRAY GOES HERE

}

你可以运行这个

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

您将每 1000 条记录有一个名为 part-00xx 的文件。