全部產品
Search
文件中心

Tablestore:讀取單行資料

更新時間:Apr 01, 2026

本文介紹如何通過 Go SDK 讀取Table Store資料表的單行資料。

注意事項

讀取資料時需要提供包含自增主鍵列值在內的完整主索引值。

前提條件

初始化Tablestore Client

方法說明

func (tableStoreClient *TableStoreClient) GetRow(request *GetRowRequest) (*GetRowResponse, error)

GetRowRequest參數說明

  • SingleRowQueryCriteria(必選)*SingleRowQueryCriteria:讀取單行資料資訊,包含以下參數。

    名稱

    類型

    說明

    TableName(必選)

    string

    資料表名稱。

    PrimaryKey(必選)

    *PrimaryKey

    主鍵資訊,包括主鍵列名稱和主索引值。

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

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

    MaxVersion(可選)

    int32

    最大版本數。

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

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

    TimeRange(可選)

    *TimeRange

    資料版本範圍。

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

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

    ColumnsToGet(可選)

    []string

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

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

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

    Filter(可選)

    ColumnFilter

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

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

    TransactionId(可選)

    *string

    局部事務ID,用於唯一標識局部事務,詳情請參見局部事務

範例程式碼

以下範例程式碼讀取了主索引值為 row1 的單行資料。

func GetRowSample(client *tablestore.TableStoreClient) {
    // 構造主鍵
    getPk := new(tablestore.PrimaryKey)
    getPk.AddPrimaryKeyColumn("id", "row1")

    // 構造讀取的行資料
    criteria := new(tablestore.SingleRowQueryCriteria)
    criteria.TableName = "test_table"
    criteria.PrimaryKey = getPk
    criteria.MaxVersion = 1

    // 調用 GetRow 方法讀取行資料
    getRowRequest := new(tablestore.GetRowRequest)
    getRowRequest.SingleRowQueryCriteria = criteria
    response, err := client.GetRow(getRowRequest)
    if err != nil {
        fmt.Println("Get row failed with error: ", err)
    } else {
        fmt.Printf("RequestId: %s \n", response.RequestId)
        fmt.Printf("Read CU Cost: %d \n", response.ConsumedCapacityUnit.Read)
        fmt.Printf("Write CU Cost: %d \n", response.ConsumedCapacityUnit.Write)
        fmt.Printf("Row Data: %v ", response.PrimaryKey)
        for _, Column := range response.Columns {
            fmt.Printf("%v ", Column)
        }
    }
}
  • 設定讀取的資料版本範圍,結果只返回版本範圍內的資料。

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

    criteria.AddColumnToGet("col2")

相關文檔