我有一个目录,里面有250万个小JSON文件。它在磁盘上占用104GB。这些文件是多行的。
我想从这些文件中创建一组JSON数组,以便我可以使用mongoimport在合理的时间内导入它们。文件不能超过16MB,但即使我成功将它们分成10个一组,我也会很高兴。
到目前为止,我可以使用以下方法每分钟处理大约1000个文件:
我想从这些文件中创建一组JSON数组,以便我可以使用mongoimport在合理的时间内导入它们。文件不能超过16MB,但即使我成功将它们分成10个一组,我也会很高兴。
到目前为止,我可以使用以下方法每分钟处理大约1000个文件:
for i in *.json; do mongoimport --writeConcern 0 --db mydb --collection all --quiet --file $i; done
我认为可以使用“jq”来完成这个任务,但是我不知道如何让bash循环一次传递10个文件给jq。 请注意,使用bash查找会出现错误,因为文件太多。
使用jq,您可以使用--slurp来创建数组,并使用-c将多行JSON变成单行。但是,我不知道如何将两者合并为单个命令。
如果可能,请帮助解决这个问题的两个部分。
find
的一个目的是处理文件集合,这些文件太大而无法放在单个命令行中。你可能正在错误地使用find
。 - chepner