如何使用 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
的文件。
我目前正在使用此 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
的文件。