sql - 有没有办法将 BigQuery 交互式 shell 结果保存到文件中?

标签 sql shell google-bigquery

执行 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/

相关文章:

mysql - 如何计算 SQL 查询有限结果集中的行数?

mysql - 在查询中使用 IGNORE 时,MySQL 是否仍然会出现死锁错误?

python - 使用python通过文件设置环境变量

shell - 如何在属于自动缩放组的所有 amazon ec2 实例上运行 shell 脚本?

python - Bigquery(和 pandas)- 确保数据插入一致性

google-bigquery - 每次在 BigQuery 中由 UDF 处理一行后,如何更新所有行的列?

mysql - 如何编写处理多个字段的外键约束

linux - 以 root 身份在脚本中间运行命令

google-bigquery - 避免 BigQuery 中的相关子查询错误

sql - SSIS 命令行 - ORA-00907 : missing right parenthesis