将大型哈希结构 JSON 文件拆分为多个较小的文件

Split large hash-structured JSON file into multiple smaller files

我正在处理一个非常大的 JSON 文件,它具有类似散列的结构:

{
  "1893": {
    "foo": {
      "2600": {
        ...[snip]...
      },
      "3520": {
        ...[snip]...
      }
    }
    "id": "foobar"
  },
  "123": {
    "bar": {
      "4989": {
        ...[snip]...
      },
      "0098": {
        ...[snip]...
      }
    }
    "id": "foobaz"
  },
  ...[snip]...
  "5553": {
    "baz: {
      "2600": {
        ...[snip]...
      },
      "3520": {
        ...[snip]...
      }
    }
    "id": "bazqux"
  }
}

(此文件类似于 Stripe's migration mapping file

我想将此文件拆分为多个较小的文件,这些文件显然是有效的 JSON 文件。由于 "root" 是一个散列,我并不关心这个文件是如何拆分的,只要生成的文件具有大致相等的项目数即可。

我试着查看 JQ,但我似乎没有掌握如何正确地实现它。将不胜感激关于工作 JQ 解决方案的任何指导,或任何其他可以帮助解决此问题的工具。

我已经成功地使用 JQ 烹饪了一些东西:

  • 检查 $file 的项目数后:

    jq -c "length" < $file
    
  • 我们建立切片索引($from$to),然后将切片保存到$output:

    jq -c "to_entries[$from:$to] | from_entries" < $file > $output