go - 将 dataType 从 bigquery.Value 更改为 string
问题描述
我将 BigQuery 与 Go 语言连接起来,如以下 API 文档所示, https://cloud.google.com/bigquery/docs/reference/libraries?hl=en_US
之后,我需要在特定的行和列中获取 sql 结果,并判断它是否等于特定的字符串。我可以将 bigquery.Value 更改为字符串吗?该怎么做?
解决方案
RowIterator.Next()
在此处查看如何使用。
Next 将下一行加载到 dst 中。如果没有更多结果,它的返回值为 iterator.Done。一旦 Next 返回 iterator.Done,所有后续调用都将返回 iterator.Done。
dst 可以实现 ValueLoader,也可以是 *[]Value、*map[string]Value 或结构指针。
Value
是类型interface{}
,所以如果你确定你拥有的值是 stringstr := fmt.Sprintf("%v", row[i])
应该可以工作。通常最好定义一个struct type
具有代表查询结果行字段的成员(根据我上面链接的文档中的表映射的类型)并将指向它的指针指向它RowIterator.Next()
而不是 slice/map of bigquery.Value
。
type myRow struct {
Name string
Num int
}
// ...
q := client.Query("select name, num from t1")
it, err := q.Read(ctx)
// handle err
for {
// instead of: var row []bigquery.Value
var row myRow // <-- use custom struct type here
err := it.Next(&row)
if err == iterator.Done {
break
}
// handle err != nil
someFuncThatTakesString(row.Name)
}
推荐阅读
- javascript - 如何在图像滑块上的透明框中覆盖文本?
- shell - 如何使用 grep 命令修剪日志文件
- apache - 无法将 /modules/mod_dav_svn.so 加载到服务器中
- python - 无法从 virtualenv 内部运行 daphne
- docker - 安装 Docker 时出现错误
- mysql - 具有复杂数据库模式的 Laravel 查询
- android - 视频无法在 Android 5.1 上播放
- javascript - 类型“对象”不可分配给 Angular 4.x 应用程序中的类型“任何 []”
- visual-studio-code - 如何让语言服务器监视“Untitled-1”文件更改?
- javascript - Promise.all 带有 $q 承诺和 JS 事件循环