2 回答
TA贡献1772条经验 获得超8个赞
您可以直接读取表内容而无需发出查询。这不会产生查询费用,并提供与您从查询中获得的相同的行迭代器。
对于小的结果,这很好。对于大表,我建议检查新的存储 api和示例页面上的代码示例。
对于一个小表或只是读取一小部分行,你可以这样做(从一个公共数据集表中读取最多 10k 行):
func TestTableRead(t *testing.T) {
ctx := context.Background()
client, err := bigquery.NewClient(ctx, "my-project-id")
if err != nil {
t.Fatal(err)
}
table := client.DatasetInProject("bigquery-public-data", "stackoverflow").Table("badges")
it := table.Read(ctx)
rowLimit := 10000
var rowsRead int
for {
var row []bigquery.Value
err := it.Next(&row)
if err == iterator.Done || rowsRead >= rowLimit {
break
}
if err != nil {
t.Fatalf("error reading row offset %d: %v", rowsRead, err)
}
rowsRead++
fmt.Println(row)
}
}
TA贡献1805条经验 获得超10个赞
您可以拆分查询以获取 100000 条记录中的 10 条并在多个 goroutine 中运行
使用像sql查询 select * from somewhere order by id DESC limit 100000 offset 0
在下一个协程中select * from somewhere order by id DESC limit 100000 offset 100000
- 2 回答
- 0 关注
- 150 浏览
添加回答
举报