go - 如何运行查询并以CSV格式返回结果

标签 go google-bigquery

我正在尝试使用BigQuery命令行工具转换查询,而改为使用Go完成,但是我没有找到如何正确配置查询的方法。我已将命令设置为CSV格式,要输出的最大行数,已记帐的最大字节数以及项目ID;然后运行标准的SQL查询,并将输出写入CSV文件,同时删除顶部的标题和空白行。

以下是我使用命令行工具正常运行的命令:

bq query --format csv \
  --max_rows <max_row_int> --maximum_bytes_billed <max_bytes_billed_int> \
  --project_id <project_id> "#standardSQL
    <standard_sql_statment>
  " \
  | tail -n +3 >results.csv

我可以从文档中看到要在Go中运行查询,我需要创建客户端/连接,然后应该能够如下运行查询:
ctx := context.Background()

client, error := bigquery.NewClient(ctx, "<project_id_string>")
if err != nil {
    return nil, err
}

q := client.Query(<standard_sql_query>)

如何在Go代码中的命令行工具代码中设置上面的配置标志?

最佳答案

您可以使用bigquery [1] [2]程序包中的QueryConfig,该程序包包含查询作业的配置。例如,您可以在其中找到MaxBytesBilled,它类似于--maximum_bytes_billed标志。

保存输出结果不是BigQuery包的特定功能。为此,可以使用encoding/csv包[3]。

[1]-https://godoc.org/cloud.google.com/go/bigquery

[2]-https://github.com/googleapis/google-cloud-go/blob/master/bigquery/query.go#L26

[3]-https://golang.org/pkg/encoding/csv/

关于go - 如何运行查询并以CSV格式返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58734536/

相关文章:

go - 尝试格式化API响应,但我不知道如何

mysql - 使用 Google BigQuery 连续运行多个查询

google-api - 有什么方法可以验证BigQuery API中的查询

google-bigquery - 大查询 : does it support UDAF?

php - 从 PHP 到 Golang 的 aes-256-gcm 解密

html - 未应用 CSS 文件

google-app-engine - 使用 Go 管理和包含多个文件的最佳方法是什么?

select - 在 Go 中使用 select 有上限吗?

google-cloud-platform - 在 BigQuery 中使用 MAX 值展平结果

google-app-engine - 在 Google App Engine 环境中托管的 Golang 网络应用程序出错;应用程序前端 BigQuery