跳到主要内容

使用 Golang 连接 Databend

Databend Go 驱动

官方 Go 驱动,提供标准的 database/sql 接口,可与现有 Go 应用程序无缝集成。

安装

go get github.com/databendlabs/databend-go

连接字符串:有关 DSN 格式和连接示例,请参阅驱动概述


主要特性

  • 标准接口:完全兼容 database/sql
  • 连接池:内置连接管理
  • 批量操作:通过事务高效执行批量插入
  • 类型安全:全面的 Go 类型映射

数据类型映射

DatabendGo说明
整数
TINYINTint8
SMALLINTint16
INTint32
BIGINTint64
TINYINT UNSIGNEDuint8
SMALLINT UNSIGNEDuint16
INT UNSIGNEDuint32
BIGINT UNSIGNEDuint64
浮点数
FLOATfloat32
DOUBLEfloat64
其他类型
DECIMALdecimal.Decimal需要 decimal 包
STRINGstring
DATEtime.Time
TIMESTAMPtime.Time
ARRAY(T)stringJSON 编码
TUPLE(...)stringJSON 编码
VARIANTstringJSON 编码
BITMAPstringBase64 编码

基本用法

import (
"database/sql"
"fmt"
"log"

_ "github.com/databendlabs/databend-go"
)

// 连接到 Databend
db, err := sql.Open("databend", "<your-dsn>")
if err != nil {
log.Fatal(err)
}
defer db.Close()

// DDL:创建表
_, err = db.Exec("CREATE TABLE users (id INT, name STRING)")
if err != nil {
log.Fatal(err)
}

// 写入:插入数据
_, err = db.Exec("INSERT INTO users VALUES (?, ?)", 1, "Alice")
if err != nil {
log.Fatal(err)
}

// 查询:选择数据
var id int
var name string
err = db.QueryRow("SELECT id, name FROM users WHERE id = ?", 1).Scan(&id, &name)
if err != nil {
log.Fatal(err)
}

fmt.Printf("User: %d, %s\n", id, name)

相关资源

开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册