全部產品
Search
文件中心

Tablestore:批量讀取資料

更新時間:Aug 13, 2026

Go SDK 可一次讀取一個或多個寬表模型資料表中的多行資料。

前提條件

安裝Tablestore Go SDK並初始化用戶端。

功能說明

調用 BatchGetRow 根據完整主鍵批量讀取多行資料。單次調用最多讀取 100 行,並支援同時讀取多個資料表。各行操作獨立執行,需逐行檢查返回結果。

func (tableStoreClient *TableStoreClient) BatchGetRow(request *BatchGetRowRequest) (*BatchGetRowResponse, error)

以下樣本讀取 example_table 中主索引值為 row1row2 的兩行資料。

row1 := &tablestore.PrimaryKey{}
row1.AddPrimaryKeyColumn("id", "row1")
row2 := &tablestore.PrimaryKey{}
row2.AddPrimaryKeyColumn("id", "row2")

criteria := &tablestore.MultiRowQueryCriteria{
    TableName:  "example_table",
    MaxVersion: 1,
}
criteria.AddRow(row1)
criteria.AddRow(row2)

request := &tablestore.BatchGetRowRequest{
    MultiRowQueryCriteria: []*tablestore.MultiRowQueryCriteria{criteria},
}
response, err := client.BatchGetRow(request)
if err != nil {
    log.Fatal(err)
}

for _, row := range response.TableToRowsResult["example_table"] {
    fmt.Println(row.IsSucceed, row.PrimaryKey, row.Columns, row.Error)
}

參數說明

BatchGetRowRequest 包含以下參數。

名稱

類型

說明

MultiRowQueryCriteria(必選)

[]*MultiRowQueryCriteria

各資料表的批量讀取條件。讀取多個資料表時,每個表配置一個元素。

批量讀取條件

MultiRowQueryCriteria[] 的類型為 MultiRowQueryCriteria,包含以下參數。

名稱

類型

說明

TableName(必選)

string

資料表名稱。

PrimaryKey(必選)

[]*PrimaryKey

要讀取的完整行主鍵列表。主索引值支援 STRINGINTEGERBINARY 類型;每個主鍵的列數、順序和類型必須與資料表的主鍵結構一致。

MaxVersion(可選)

int

每個屬性列最多返回的版本數。MaxVersionTimeRange 至少設定一個。

符合查詢條件的資料版本數超過該值時,按從新到舊的順序返回指定數量的版本。

TimeRange(可選)

*TimeRange

版本時間範圍,包括起始時間、結束時間或指定版本,單位為毫秒。MaxVersionTimeRange 至少設定一個。

每個屬性列可以具有不同的資料版本。設定後,僅返回指定版本時間範圍內的資料。

ColumnsToGet(可選)

[]string

要返回的主鍵列或屬性列名稱。未設定時返回整行資料。

如果行資料不包含任何指定列,則對應的 RowResult 為成功,但不包含主鍵和屬性列。

Filter(可選)

ColumnFilter

屬性列過濾器。更多資訊,請參見過濾器

同時設定 ColumnsToGetFilter 時,先按 ColumnsToGet 選擇列,再使用 Filter 對選擇後的列進行過濾。如果過濾條件引用的屬性列不在 ColumnsToGet 中,則按該列不存在處理,是否過濾該行由 FilterIfMissing 決定。

StartColumn(可選)

*string

屬性列名稱範圍的起始列,結果包含該列。

EndColumn(可選)

*string

屬性列名稱範圍的結束列,結果不包含該列。

傳回值

BatchGetRowResponse 包含以下商務資訊。

欄位

類型

說明

TableToRowsResult

map[string][]RowResult

按資料表名稱組織的逐行結果。每個 RowResult 包含成功狀態、錯誤資訊、主鍵、屬性列和原請求中的行序號。

情境樣本

同時讀取多張表

以下樣本在一次請求中讀取兩張資料表。每張表需要分別建立一個 MultiRowQueryCriteria

primaryKey1 := &tablestore.PrimaryKey{}
primaryKey1.AddPrimaryKeyColumn("id", "row1")
criteria1 := &tablestore.MultiRowQueryCriteria{TableName: "example_table", MaxVersion: 1}
criteria1.AddRow(primaryKey1)

primaryKey2 := &tablestore.PrimaryKey{}
primaryKey2.AddPrimaryKeyColumn("id", "row2")
criteria2 := &tablestore.MultiRowQueryCriteria{TableName: "example_table_2", MaxVersion: 1}
criteria2.AddRow(primaryKey2)

request := &tablestore.BatchGetRowRequest{
    MultiRowQueryCriteria: []*tablestore.MultiRowQueryCriteria{criteria1, criteria2},
}
response, err := client.BatchGetRow(request)
if err != nil {
    log.Fatal(err)
}
for tableName, rows := range response.TableToRowsResult {
    for _, row := range rows {
        fmt.Println(tableName, row.IsSucceed, row.PrimaryKey, row.Columns, row.Error)
    }
}

讀取指定時間範圍內的資料版本

以下樣本讀取指定時間範圍內的資料版本。時間範圍為左閉右開區間。

endTime := time.Now().UnixMilli()
startTime := endTime - int64(time.Hour/time.Millisecond)

criteria.MaxVersion = 0
criteria.TimeRange = &tablestore.TimeRange{
    Start: startTime,
    End:   endTime,
}