Todos os produtos
Search
Central de documentação

Tablestore:Consultar dados com o driver Go

Última atualização: Jul 03, 2026

O driver Go (aliyun-tablestore-go-sql-driver) implementa a interface database/sql/driver e permite acessar dados do Tablestore pelo pacote padrão database/sql.

Pré-requisitos

  • Par de AccessKey com a permissão ots:SQL* (obrigatório para usuários RAM).

  • Tabela de dados e tabela de mapeamento. Para mais informações, consulte Operações DDL.

Procedimento

Etapa 1: Instale o driver Go

Execute o comando abaixo para instalar o driver Go:

go get github.com/aliyun/aliyun-tablestore-go-sql-driver

Etapa 2: Conectar-se com o driver Go

Parâmetros

Para acessar o Tablestore com o driver Go, especifique o nome do driver e um Data Source Name (DSN).

Parâmetro

Descrição

driverName

Nome do driver Go do Tablestore. Defina como ots.

dataSourceName

DSN no formato schema://accessKeyId:accessKeySecret@endpoint/instanceName[?param1=value1&...&paramN=valueN]. Campos principais:

  • schema (obrigatório): protocolo, geralmente https.

  • accessKeyId:accessKeySecret (obrigatório): AccessKey ID e AccessKey Secret da conta Alibaba Cloud ou do usuário RAM.

  • endpoint (obrigatório): endpoint da instância do Tablestore.

  • instanceName (obrigatório): nome da instância do Tablestore.

Para outras opções de configuração, consulte Opções de configuração.

Exemplo

import (
    "database/sql"
    _ "github.com/aliyun/aliyun-tablestore-go-sql-driver"
)

// Set the Go driver name and the Tablestore data source name.
db, err := sql.Open("ots", "https://access_key_id:access_key_secret@endpoint/instance_name")
if err != nil {
    panic(err)    // Handle the error.
}

Etapa 3: Consultar dados

Execute consultas com o método Query ou use instruções preparadas com o método Prepare.

Nota

Os tipos das variáveis devem corresponder aos tipos de dados do Tablestore. Para ver o mapeamento de tipos, consulte Mapeamento de tipos de dados.

Query

rows, err := db.Query("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?", 3)
if err != nil {
    panic(err)
}
defer rows.Close()
for rows.Next() {
    var pk1 int64
    var col1 float64
    var col2 string
    if err := rows.Scan(&pk1, &col1, &col2); err != nil {
        panic(err)
    }
    fmt.Println(pk1, col1, col2)
}

Prepare

stmt, err := db.Prepare("SELECT pk1, col1, col2 FROM test_table WHERE pk1 = ?")
if err != nil {
    panic(err)
}
defer stmt.Close()
rows, err := stmt.Query(3)
if err != nil {
    panic(err)
}
defer rows.Close()
for rows.Next() {
    var pk1 int64
    var col1 float64
    var col2 string
    if err := rows.Scan(&pk1, &col1, &col2); err != nil {
        panic(err)
    }
    fmt.Println(pk1, col1, col2)
}

Exemplo completo

O exemplo abaixo conecta-se a uma instância do Tablestore e consulta todos os dados de test_table:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/aliyun/aliyun-tablestore-go-sql-driver"
)

func main() {
    db, err := sql.Open("ots", "https://************************:********************************@myinstance.cn-hangzhou.ots.aliyuncs.com/myinstance")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    rows, err := db.Query("SELECT * FROM test_table")
    if err != nil {
        panic(err)
    }
    defer rows.Close()

    columns, _ := rows.Columns()
    for rows.Next() {
        values := make([]interface{}, len(columns))
        pointers := make([]interface{}, len(columns))
        for i := range values {
            pointers[i] = &values[i]
        }
        if err := rows.Scan(pointers...); err != nil {
            panic(err)
        }
        fmt.Println(values...)
    }
}

Opções de configuração

Configure o driver Go adicionando parâmetros de consulta ao DSN.

https://ak:sk@endpoint/instance?retryTimes=3&requestTimeout=10s

As opções baseadas em tempo usam o formato de duração do Go, como 15s e 500ms.

Opção

Padrão

Descrição

retryTimes

10

Número máximo de tentativas. Inteiro.

connectionTimeout

15s

Tempo limite de conexão. 0 indica ausência de tempo limite.

requestTimeout

30s

Tempo limite da requisição.

maxRetryTime

5s

Intervalo máximo entre tentativas.

maxIdleConnections

2000

Quantidade máxima de conexões ociosas. Inteiro.

Mapeamento de tipos de dados

Os tipos de dados do Tablestore correspondem a tipos do Go. Incompatibilidades de tipo geram erro.

Tipo de dado do Tablestore

Tipo de dado do Go

Integer

int64

Binary

[]byte

String

string

Double

float64

Boolean

bool