go - BigQuery - 从 Cloud Run 中的 Go 服务器获取表数据
问题描述
我能够通过 Golang 服务器将 Big Query 表输出作为 json 获取。但是有没有办法直接获取模式而不是将其定义为ColStatsRow
?此外,任何使这更好的方法。
type ColStatsRow struct {
COLUMN_NAME string `bigquery:"column_name"`
COLUMN_VALUE string `bigquery:"column_value"`
FREQUENCY int64 `bigquery:"frequency"`
}
// getOutput prints results from a query
func getOutput(w http.ResponseWriter, iter *bigquery.RowIterator) error {
var rows []ColStatsRow
for {
var row ColStatsRow
err := iter.Next(&row)
if err == iterator.Done {
out, err := json.Marshal(rows)
if err != nil {
return fmt.Errorf("error marshalling results: %v", err)
}
w.Write([]byte(out))
return nil
}
if err != nil {
return fmt.Errorf("error iterating through results: %v", err)
}
rows = append(rows, row)
}
}
谢谢你。
解决方案
如果您追求结果的架构,它可以在RowIterator
.
如果您的意思是您想要更动态地处理没有特定结构的行,通常检查架构和/或利用类型开关的某种组合是解决此问题的方法。
推荐阅读
- node.js - React + Express 路由问题
- javascript - 基于三元运算符显示元素
- amazon-ecs - 如何通过 ecs-cli 启用 ECS 服务发现?
- html - 使用 VBA 将带有 HTML 标记的文本呈现为 Word 表格中的格式化文本
- django - gaierror - [Errno -3] 名称解析暂时失败
- ios - 如何在 iOS 中通过 OCR 获取文本时检测粗体或特定颜色字体?
- java - 获取值表单xml字符串java spring
- mysql - 根据 MySQL 中另一个表中的值从表中选择
- spring-boot - 如何在投影中获取实体
- c# - OnTriggerStay 中的 InputGetKeyDown 被多次调用