All Products
Search
Document Center

Tablestore:Kueri data dengan driver Go

Last Updated:Jun 06, 2026

Driver Go (aliyun-tablestore-go-sql-driver) mengimplementasikan antarmuka database/sql/driver, sehingga memungkinkan Anda mengakses data Tablestore melalui paket standar database/sql.

Prasyarat

  • Pasangan Kunci Akses dengan izin ots:SQL* (wajib untuk pengguna RAM).

  • Sebuah tabel data dan tabel pemetaan. Untuk informasi selengkapnya, lihat Operasi DDL.

Prosedur

Langkah 1: Instal driver Go

Jalankan perintah berikut untuk menginstal driver Go:

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

Langkah 2: Hubungkan dengan driver Go

Parameter

Untuk mengakses Tablestore menggunakan driver Go, tentukan nama driver dan Data Source Name (DSN).

Parameter

Deskripsi

driverName

Nama driver Go Tablestore. Tetapkan nilai ini ke ots.

dataSourceName

DSN, dalam format schema://accessKeyId:accessKeySecret@endpoint/instanceName[?param1=value1&...&paramN=valueN]. Bidang utama:

  • schema (wajib): Protokol. Biasanya https.

  • accessKeyId:accessKeySecret (wajib): ID AccessKey dan AccessKey Secret dari Akun Alibaba Cloud atau RAM user Anda.

  • endpoint (wajib): Titik akhir instans Tablestore Anda.

  • instanceName (wajib): Nama instans Tablestore Anda.

Untuk opsi konfigurasi lainnya, lihat Opsi konfigurasi.

Contoh

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

// Tetapkan nama driver Go dan nama sumber data Tablestore.
db, err := sql.Open("ots", "https://access_key_id:access_key_secret@endpoint/instance_name")
if err != nil {
    panic(err)    // Tangani error.
}

Langkah 3: Kueri data

Lakukan kueri menggunakan metode Query atau gunakan prepared statement dengan metode Prepare.

Catatan

Tipe variabel harus sesuai dengan tipe data Tablestore. Untuk pemetaan tipe, lihat Pemetaan tipe data.

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

Contoh lengkap

Contoh berikut menghubungkan ke instans Tablestore dan melakukan kueri terhadap semua data dari 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...)
    }
}

Opsi konfigurasi

Konfigurasikan driver Go dengan menambahkan parameter kueri ke DSN.

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

Opsi berbasis waktu menggunakan format durasi Go, seperti 15s dan 500ms.

Opsi

Bawaan

Deskripsi

retryTimes

10

Jumlah maksimum percobaan ulang. Bilangan bulat.

connectionTimeout

15s

Timeout koneksi. 0 berarti tanpa timeout.

requestTimeout

30s

Timeout permintaan.

maxRetryTime

5s

Interval maksimum antara percobaan ulang.

maxIdleConnections

2000

Jumlah maksimum koneksi idle. Bilangan bulat.

Pemetaan tipe data

Tipe data Tablestore dipetakan ke tipe data Go. Ketidaksesuaian tipe akan menyebabkan error.

Tipe data Tablestore

Tipe data Go

Integer

int64

Binary

[]byte

String

string

Double

float64

Boolean

bool