本文介紹如何通過 Go SDK 讀取Table Store資料表的單行資料。
注意事項
讀取資料時需要提供包含自增主鍵列值在內的完整主索引值。
前提條件
方法說明
func (tableStoreClient *TableStoreClient) GetRow(request *GetRowRequest) (*GetRowResponse, error)範例程式碼
以下範例程式碼讀取了主索引值為 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")