目前支持使用SQL查询功能的地域有华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、德国(法兰克福)、美国(弗吉尼亚)、印度(孟买)和新加坡。

  • 如果要使用RAM用户进行操作,请确保已创建RAM用户,并为RAM用户授予所有SQL操作权限,即在自定义权限策略中配置 "Action": "ots:SQL*" 。具体操作,请参见 配置RAM用户权限
  • 已获取AccessKey(包括AccessKey ID和AccessKey Secret)。具体操作,请参见 获取AccessKey
  • 已创建数据表并为数据表创建映射关系。具体操作,请分别参见 创建数据表 创建表的映射关系 。 dataSourceName https://************************:********************************@myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance 表格存储数据源名称。格式为 schema://accessKeyId:accessKeySecret@endpoint/instanceName[?param1=value1&...&paramN=valueN] 。主要字段说明如下:
  • schema(必选):表格存储驱动使用的协议,一般设置为https。
  • accessKeyId:accessKeySecret(必选):阿里云账号或者RAM用户的AccessKey ID和AccessKey Secret。
  • endpoint(必选):实例的服务地址。更多信息,请参见 服务地址
  • instanceName(必选):实例名称。
  • 其他常用配置项的说明,请参见 配置项 。 // 设置Go语言驱动名称和表格存储数据源名称。 db, err := sql.Open("ots", "https://access_key_id:access_key_secret@endpoint/instance_name") if err != nil { panic(err) // 处理错误。

    步骤三:查询数据

    表格存储的Go语言驱动支持直接使用Query方法执行查询语句,也支持使用Prepare创建一个Stmt进行查询。

    重要 获取查询结果时,接收字段数据的变量类型必须和表格存储中字段数据类型相匹配。关于数据类型映射的更多信息,请参见 数据类型映射
  • 使用Query方法查询
    // 设置SQL语句,此处以查询test_table表中pk1列、col1列和col2列的数据为例介绍,请根据实际需要设置。
    rows, err := db.Query("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?", 3)
    if err != nil {
        panic(err)    // 处理错误。
    for rows.Next() {
        var pk1 int64
        var col1 float64
        var col2 string
        err := rows.Scan(&pk1, &col1, &col2)
        if err != nil {
            panic(err)    // 处理错误。
                         
  • 使用Prepare创建一个Stmt查询
    // 设置SQL语句,此处以查询test_table表中pk1列、col1列和col2列的数据为例介绍,请根据实际需要设置。
    stmt, err := db.Prepare("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?")
    if err != nil {
        panic(err)    // 处理错误。
    rows, err := stmt.Query(3)
    if err != nil {
        panic(err)    // 处理错误。
    for rows.Next() {
        var pk1 int64
        var col1 float64
        var col2 string
        err := rows.Scan(&pk1, &col1, &col2)
        if err != nil {
            panic(err)    // 处理错误。
                      

    查询华东1(杭州)地域下myinstance实例中test_table的所有数据。

    package main
    import (
        "database/sql"
        "fmt"
        _ "github.com/aliyun/aliyun-tablestore-go-sql"
    func main() {
        db, err := sql.Open("ots", "https://************************:********************************@myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance")
        if err != nil {
            panic(err)
        rows, err := db.Query("SELECT * FROM test_table")
        if err != nil {
            panic(err)
        for rows.Next() {
            // 获取所有列。
            columns, err := rows.Columns()
            if err != nil {
                panic(err)
            // 创建存放数据的数组和指针。
            values := make([]interface{}, len(columns))
            pointers := make([]interface{}, len(columns))
            for i := range values {
                pointers[i] = &values[i]
            // 扫描数据行。
            err = rows.Scan(pointers...)
            if err != nil {
                panic(err)
            fmt.Println(values...)
        rows.Close()
        db.Close()
                      
    通过表格存储Go语言驱动支持修改Go SDK的配置项。常用配置项的详细说明请参见下表。
  •