通过 Google BigQuery API 将查询结果导出为 JSON

Exporting query results as JSON via Google BigQuery API

我有 jobs/queries return 几十万行。我想获取查询结果并将它们作为 json 写入存储桶中。

有什么简单的方法可以做到这一点吗?目前我能想到的唯一方法是:

这看起来有点混乱和迂回。我将把所有这些都包装在一个连接到 UI 的服务中,这将有很多用户点击它并且不想参与管理所有这些临时 table 的业务。

1) 正如你所说的步骤很好。您需要使用 Google Cloud Storage 进行导出作业。解释了从 BigQuery 导出数据 here,还检查了不同路径语法的变体。

然后您可以将文件从 GCS 下载到您的本地存储。

Gsutil 工具可以帮助您进一步将文件从 GCS 下载到本地机器。

使用这种方法,您首先需要导出到 GCS,然后再传输到本地机器。如果你有一个消息队列系统(比如 Beanstalkd)来驱动所有这些,那么很容易做一系列操作:提交作业,监控作业状态,完成后启动导出到 GCS,然后删除临时文件table.

另请注意,您可以 update a table via the API and set the expirationTime 属性,使用此方法您无需删除它。

2) 如果你使用BQ Cli工具,那么你可以将输出格式设置为JSON,你可以重定向到一个文件。这样你可以在本地实现一些导出,但是它有一些其他的限制。

这会将前 1000 行导出为 JSON

bq --format=prettyjson query --n=1000 "SELECT * from publicdata:samples.shakespeare" > export.json