1

我想将 json 文件从 Amazon S3 传输到 BigQuery,但我遇到了 BigQuery 仅支持新的分隔 json 文件的问题。我不知道如何将我的 json 文件转换为 ndjson。问题是我不知道如何转换,因为外部 JSON 结构中的加载日期和记录源。

在这里您可以看到我的 json 文件的示例:

{
    "edwLoadDate": "2017-01-18T18-08-44",
    "edwRecordSource": "MAILCHIMP",
    "data": [
        {
             "data": {
                  "lastName": "John",
                  "firstName": "Doe",
                  "email": "john@example123.com"
              },
            "edwSequence": "0"
          },  
          {
             "data": {
                  "lastName": "John",
                  "firstName": "Doe",
                  "email": "john@example123.com"
              },
            "edwSequence": "1"
           }
     ]
}

4

1 回答 1

0

我尝试通过以下步骤将您的示例 JSON 文件传输到 BigQuery:

  1. 在您的示例 JSON 文件中,添加一个“[...]”:

输入.json

[{
    "edwLoadDate": "2017-01-18T18-08-44",
    "edwRecordSource": "MAILCHIMP",
    "data": [
        {
             "data": {
                  "lastName": "John",
                  "firstName": "Doe",
                  "email": "john@example123.com"
              },
            "edwSequence": "0"
          },  
          {
             "data": {
                  "lastName": "John",
                  "firstName": "Doe",
                  "email": "john@example123.com"
              },
            "edwSequence": "1"
           }
     ]
}]

  1. 运行 shell 脚本命令:
$ cat input.json | jq -c '.[]' > output.json

运行 shell 脚本命令后,这里是output.json文件:

{"edwLoadDate":"2017-01-18T18-08-44","edwRecordSource":"MAILCHIMP","data":[{"data":{"lastName":"John","firstName":"Doe","email":"john@example123.com"},"edwSequence":"0"},{"data":{"lastName":"John","firstName":"Doe","email":"john@example123.com"},"edwSequence":"1"}]}
  1. 使用以下命令将转换后的 JSON 文件上传到 Cloud Storage 存储分区:
gsutil cp output.json gs://sample-bucket
  1. 创建一个示例 BigQuery 数据集,用于保存上传的 BigQuery JSON 文件。查询后的结果如下:

在此处输入图像描述

于 2021-10-14T08:30:12.780 回答