全部產品
Search
文件中心

Tablestore:批量讀取資料

更新時間:Apr 01, 2026

本文介紹如何通過 Go SDK 批量讀取Table Store中的資料,支援查詢多個表的資料。

注意事項

單次批量讀取操作最多支援讀取 100 行資料。

前提條件

初始化Tablestore Client

方法說明

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

BatchGetRowRequest參數說明

  • MultiRowQueryCriteria(必選)[]*MultiRowQueryCriteria:批量讀取資料資訊,包含以下參數。

    名稱

    類型

    說明

    TableName(必選)

    string

    資料表名稱。

    PrimaryKey(必選)

    []*PrimaryKey

    主鍵列表。

    • 主鍵列資料類型包括 STRING、INTEGER 和 BINARY。

    • 主鍵個數和類型必須與資料表的主鍵保持一致。

    MaxVersion(可選)

    int

    最大版本數。

    • 必須設定最大版本數和版本範圍的其中一個。

    • 如果符合查詢條件的資料版本數量超過設定的最大版本數,按從新到舊的順序返回指定版本數量的資料。

    TimeRange(可選)

    *TimeRange

    資料版本範圍。

    • 必須設定最大版本數和版本範圍的其中一個。

    • Table Store資料表的每個屬性列可以有不同的資料版本,設定版本範圍後,僅返回版本範圍內的資料。

    ColumnsToGet(可選)

    []string

    指定讀取的資料列,可以是主鍵列或屬性列。

    • 不設定ColumnsToGet時,返回整行資料。

    • 設定ColumnsToGet時,如果讀取的行資料不包含任何指定的資料列,將返回 null。

    Filter(可選)

    ColumnFilter

    過濾條件,詳情請參見過濾器

    • 如果同時設定ColumnsToGet和Filter,先按ColumnsToGet篩選合格資料行,再按Filter條件過濾資料。

範例程式碼

以下範例程式碼用於讀取 test_table 表中主索引值為 row1 和 row2 的兩行資料。

func BatchGetRowSample(client *tablestore.TableStoreClient) {
    // 構造查詢條件
    multiRowQueryCriteria := new(tablestore.MultiRowQueryCriteria)
    // 設定表名稱
    multiRowQueryCriteria.TableName = "test_table"
    // 添加第 1 行主鍵資訊
    getPk1 := new(tablestore.PrimaryKey)
    getPk1.AddPrimaryKeyColumn("id", "row1")
    multiRowQueryCriteria.AddRow(getPk1)
    // 添加第 2 行主鍵資訊
    getPk2 := new(tablestore.PrimaryKey)
    getPk2.AddPrimaryKeyColumn("id", "row2")
    multiRowQueryCriteria.AddRow(getPk2)
    // 設定查詢版本
    multiRowQueryCriteria.MaxVersion = 1

    // 調用 BatchGetRow 方法進行批量資料查詢
    batchGetRowRequest := new(tablestore.BatchGetRowRequest)
    batchGetRowRequest.MultiRowQueryCriteria = append(batchGetRowRequest.MultiRowQueryCriteria, multiRowQueryCriteria)
    batchGetRowResponse, err := client.BatchGetRow(batchGetRowRequest)

    // 返回結果處理
    if err != nil {
        fmt.Println("Batch get row failed with error: ", err)
    } else {
        fmt.Printf("* RequestId: %s \n", batchGetRowResponse.RequestId)
        for tableName, rows := range batchGetRowResponse.TableToRowsResult {
            fmt.Printf("* Table: %s \n", tableName)
            for _, row := range rows {
                if row.IsSucceed {
                    fmt.Printf("Succeeded Row: %v \n", row)
                } else {
                    fmt.Printf("Failed Row: %d | %v \n", row.Index, row.Error)
                }
            }
        }
    }
}

您可以在批量讀取資料時參考以下範例程式碼進行參數設定。

  • 讀取多張表的資料。批量讀取支援一次讀取多張表的資料,您需要為每張表指定一個MultiRowQueryCriteria。

    // 構造第 2 個表的查詢條件
    multiRowQueryCriteria1 := new(tablestore.MultiRowQueryCriteria)
    multiRowQueryCriteria1.TableName = "orders_small"
    // 添加第 1 行主鍵資訊
    getPk3 := new(tablestore.PrimaryKey)
    getPk3.AddPrimaryKeyColumn("order_id", "90fb478c-1360-11f0-a34d-00163e30a2a9")
    multiRowQueryCriteria1.AddRow(getPk3)
    // 設定查詢版本
    multiRowQueryCriteria1.MaxVersion = 1
    // Request 添加 MultiRowQueryCriteria
    batchGetRowRequest.MultiRowQueryCriteria = append(batchGetRowRequest.MultiRowQueryCriteria, multiRowQueryCriteria1)
  • 設定讀取的資料版本範圍,結果只返回版本範圍內的資料。

    // 設定查詢的資料版本範圍為目前時間往前一天
    timeRange := new(tablestore.TimeRange)
    timeRange.Start = int64(time.Now().Unix() * 1000 - 86400 * 1000) 
    timeRange.End = int64(time.Now().Unix() * 1000) 
    multiRowQueryCriteria.TimeRange = timeRange
  • 指定讀取的屬性列。

    multiRowQueryCriteria.AddColumnToGet("col1")

相關文檔

範圍讀取資料