有没有一种方法可以将BigQuery交互式Shell结果保存到文件中?

时间:2020-02-17 02:14:31

标签: sql shell google-bigquery

执行bq shell将运行BigQuery交互式外壳。运行后,外壳程序可以接受SQL命令,并以表格格式显示结果。

是否可以将这些交互式结果保存到文件(例如CSV,JSON等)中?

1 个答案:

答案 0 :(得分:2)

您可以使用--format标志来实现此目的,您可以在其中传递以下选项之一:

  • 漂亮的格式化表格输出
  • 稀疏-更简单的表输出
  • prettyjson-易于阅读的JSON格式
  • json-最大程度地压缩JSON
  • csv-带标题的csv格式

我已经用prettyjson格式对其进行了测试,并且效果很好:

bq query --format=prettyjson --use_legacy_sql=false 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC' > output.json

通过在命令末尾使用>,可以将命令的输出保存到新文件中。您将可以在output.json文件中查看查询的输出。

另一种可行的方法是使用bq query命令将查询结果写入永久表,然后将结果下载到CSV / JSON。

当您运行以下示例时:

bq shell
query --use_legacy_sql=false --destination_table project_id:dataset.table 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'

请记住,目标表必须是新表或为空。

执行查询的结果如下:

Waiting on bqjob_r11abc345 ... (5s) Current status: DONE
+---------+--------+
|  name   | number |
+---------+--------+
| Robert  |  10021 |
| John    |   9636 |
| Robert  |   9297 |
| ...              |
+---------+--------+

现在,当您转到BigQuery网络用户界面时,将可以在project_id:dataset.table中查看结果。运行SQL查询后,可以将结果下载到本地计算机上的文件中,也可以将结果保存到Google云端硬盘或Google表格中。您只能在本地以CSV或换行符分隔的JSON格式下载查询结果。

我建议您看看official documentation。希望对您有帮助。