全部产品
Search
文档中心

表格存储:读取单行数据

更新时间:Mar 31, 2026

本文介绍如何通过 Go SDK 读取表格存储数据表的单行数据。

注意事项

读取数据时需要提供包含自增主键列值在内的完整主键值。

前提条件

初始化Tablestore Client

方法说明

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

GetRowRequest参数说明

  • SingleRowQueryCriteria(必选)*SingleRowQueryCriteria:读取单行数据信息,包含以下参数。

    名称

    类型

    说明

    TableName(必选)

    string

    数据表名称。

    PrimaryKey(必选)

    *PrimaryKey

    主键信息,包括主键列名称和主键值。

    • 主键列数据类型包括 STRING、INTEGER 和 BINARY。

    • 主键个数和类型必须与数据表的主键保持一致。

    MaxVersion(可选)

    int32

    最大版本数。

    • 必须设置最大版本数和版本范围的其中一个。

    • 如果符合查询条件的数据版本数量超过设置的最大版本数,按从新到旧的顺序返回指定版本数量的数据。

    TimeRange(可选)

    *TimeRange

    数据版本范围。

    • 必须设置最大版本数和版本范围的其中一个。

    • 表格存储数据表的每个属性列可以有不同的数据版本,设置版本范围后,仅返回版本范围内的数据。

    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")

相关文档