执行 bq shell
会运行 BigQuery 交互式 shell。运行后,shell 可以接受 SQL 命令并显示结果的表格格式。
有没有办法将这些交互结果保存到文件中(例如 CSV、JSON 等...)?
最佳答案
您可以通过使用 --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 Drive 或 Google Sheets。您只能以 CSV 或换行符分隔的 JSON 格式在本地下载查询结果。
我建议您看看official documentation 。希望对您有帮助。
关于sql - 有没有办法将 BigQuery 交互式 shell 结果保存到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60255109/