2 回答

TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊
您可以直接讀取表內(nèi)容而無需發(fā)出查詢。這不會產(chǎn)生查詢費用,并提供與您從查詢中獲得的相同的行迭代器。
對于小的結(jié)果,這很好。對于大表,我建議檢查新的存儲 api和示例頁面上的代碼示例。
對于一個小表或只是讀取一小部分行,你可以這樣做(從一個公共數(shù)據(jù)集表中讀取最多 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貢獻(xiàn)1805條經(jīng)驗 獲得超10個贊
您可以拆分查詢以獲取 100000 條記錄中的 10 條并在多個 goroutine 中運行
使用像sql查詢 select * from somewhere order by id DESC limit 100000 offset 0
在下一個協(xié)程中select * from somewhere order by id DESC limit 100000 offset 100000
- 2 回答
- 0 關(guān)注
- 237 瀏覽
添加回答
舉報