Golang
Databend 提供了一个用 Golang 编写的驱动程序(databend-go),该驱动程序便于使用 Golang 编程语言开发应用程序并与 Databend 建立连接。
有关安装说明、示例和源代码,请参阅 GitHub 上的 databend-go 仓库。
数据类型映射
下表展示了 Databend 数据类型与其对应的 Go 数据类型的对应关系:
Databend | Go |
---|---|
TINYINT | int8 |
SMALLINT | int16 |
INT | int32 |
BIGINT | int64 |
TINYINT UNSIGNED | uint8 |
SMALLINT UNSIGNED | uint16 |
INT UNSIGNED | uint32 |
BIGINT UNSIGNED | uint64 |
Float32 | float32 |
Float64 | float64 |
Bitmap | string |
Decimal | decimal.Decimal |
String | string |
Date | time.Time |
DateTime | time.Time |
Array(T) | string |
Tuple(T1, T2, ...) | string |
Variant | string |
Databend Go 驱动程序行为总结
Databend Go 驱动程序兼容 "database/sql" 接口规范。以下是一些常见的基础行为,以及涉及的关键函数和原理。
基本行为 | 关键函数涉及 | 原理 |
---|---|---|
创建连接 | DB.Open | 使用 DSN 字符串和 DB.Open 方法建立与 Databend 的连接。DSN 字符串格式为 https://user:password@host/database?<query_option>=<value> 。 |
执行语句 | DB.Exec | DB.Exec 方法通过 v1/query 接口执行 SQL 语句,用于创建、删除表和插入数据。 |
批量插入 | DB.Begin , Tx.Prepare , Stmt.Exec , Tx.Commit | 批量插入/替换数据(INSERT INTO 和 REPLACE INTO )通过事务处理。使用 Stmt.Exec 向预处理语句对象添加尽可能多的数据;数据将被追加到一个文件中。执行 Tx.Commit() 最终将数据上传到内置 Stage 并执行插入/替换操作,使用 Stage 附件。 |
查询单行 | DB.QueryRow , Row.Scan | 使用 DB.QueryRow 方法查询单行数据并返回一个 *sql.Row ,然后调用 Row.Scan 将列数据映射到变量。 |
遍历行 | DB.Query , Rows.Next , Rows.Scan | 使用 DB.Query 方法查询多行数据并返回一个 *sql.Rows 结构,使用 Rows.Next 方法遍历行,并使用 Rows.Scan 将数据映射到变量。 |
上传到内部 Stage | APIClient.UploadToStage | 上传数据到 Stage。默认情况下,使用 PRESIGN UPLOAD 获取 URL,或者如果 PRESIGN 被禁用,使用 v1/upload_to_stage API。 |
教程 -1:使用 Golang 与 Databend 集成
在开始之前,请确保您已成功安装本地 Databend。有关详细说明,请参阅 本地和 Docker 部署。
步骤 1. 准备一个 SQL 用户账户
为了使您的程序能够连接到 Databend 并执行 SQL 操作,您必须在代码中提供一个具有适当权限的 SQL 用户账户。如果需要,请在 Databend 中创建一个,并确保该 SQL 用户仅具有必要的权限以确保安全。
本教程以名为 'user1' 且密码为 'abc123' 的 SQL 用户为例。由于程序将向 Databend 写入数据,该用户需要 ALL 权限。有关如何管理 SQL 用户及其权限的详细信息,请参阅 用户与角色。
CREATE USER user1 IDENTIFIED BY 'abc123';
GRANT ALL on *.* TO user1;