本文介绍如何通过 Go SDK 读取表格存储数据表的单行数据。
注意事项
读取数据时需要提供包含自增主键列值在内的完整主键值。
前提条件
方法说明
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")