【问题标题】:How to split a large CSV file into multiple JSON files using the Miller command line tool?如何使用 Miller 命令行工具将大型 CSV 文件拆分为多个 JSON 文件?
【发布时间】:2022-01-10 18:09:33
【问题描述】:

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

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

效果很好,但是 JSON 数组太大了。

Miller 能否将输出拆分为多个较小的 JSON 文件,每个文件包含 X 行?

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

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

{
  "instances": 

//JSON ARRAY GOES HERE

}

【问题讨论】:

  • 你试过我的答案了吗?有用吗?
  • @aborruso 抱歉,我的需求发生了变化,所以我不再需要解决这个问题,忘记了我问过这个问题,但我现在接受了你的回答。

标签: miller


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多