将大型的散列结构化JSON文件拆分为多个较小的文件

时间:2019-01-22 11:02:49

标签: json parsing split multiple-files data-partitioning

我正在处理一个非常大的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文件。由于“根”是一个散列,因此我并不在乎该文件的拆分方式,只要生成的文件具有大约相等的项目数即可。

我尝试查看JQ,但是我似乎对如何正确实现此目标一无所知。希望对有效的JQ解决方案提供任何指导,或者在此方面有帮助的任何其他工具。

1 个答案:

答案 0 :(得分:0)

我已经设法使用JQ来烹饪一些东西:

  • 在检查$file具有的项目数之后:

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

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