使用 Rust 连接 Databend
Databend 提供了一个用 Rust 编写的驱动程序 (crates.io - databend-driver),它有助于使用 Rust 编程语言开发应用程序并建立与 Databend 的连接。请注意,该驱动程序目前不支持处理数组。
有关安装说明、示例和源代码,请参阅 GitHub - databend-driver。
数据类型映射
下表说明了 Databend 通用数据类型及其对应的 Rust 等效项之间的对应关系:
Databend | Rust |
---|---|
BOOLEAN | bool |
TINYINT | i8,u8 |
SMALLINT | i16,u16 |
INT | i32,u32 |
BIGINT | i64,u64 |
FLOAT | f32 |
DOUBLE | f64 |
DECIMAL | String |
DATE | chrono::NaiveDate |
TIMESTAMP | chrono::NaiveDateTime |
VARCHAR | String |
BINARY | Vec<u8> |
下表说明了 Databend 半结构化数据类型及其对应的 Rust 等效项之间的对应关系:
Databend | Rust |
---|---|
ARRAY[T] | Vec<T> |
TUPLE[T, U] | (T, U) |
MAP[K, V] | HashMap<K, V> |
VARIANT | String |
BITMAP | String |
GEOMETRY | String |
Databend Rust 驱动程序行为摘要
下表总结了 Rust 驱动程序的主要行为和功能及其用途:
函数名 | 描述 |
---|---|
info | 返回客户端的连接信息。 |
version | 返回执行 SELECT VERSION() 语句的结果。 |
exec | 执行 SQL 语句并返回受影响的行数。 |
query_iter | 执行 SQL 查询并返回一个迭代器,用于逐行处理结果。 |
query_iter_ext | 执行 SQL 查询并返回一个迭代器,其中包含有关结果的统计信息。 |
query_row | 执行 SQL 查询并返回单个行结果。 |
get_presigned_url | 基于操作和 Stage 参数生成 PRESIGN 语句,返回 HTTP 方法、标头和 URL。 |
upload_to_stage | 将数据上传到 Stage。默认情况下使用 PRESIGN UPLOAD 获取 URL,如果禁用 PRESIGN,则使用 v1/upload_to_stage API。 |
load_data | 将数据上传到内置 Stage (upload_to_stage ) 并使用 stage attachment 执行 insert/replace。 |
load_file | 重用 load_data 逻辑来上传文件并插入数据。 |
stream_load | 将数据读取为 Vec,将其转换为 CSV,然后调用 load_data 方法。 |
教程 1:使用 Rust 与 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;
步骤 2. 编写 Rust 程序
在此步骤中,你将创建一个与 Databend 通信的简单 Rust 程序。该程序将涉及创建表、插入数据和执行数据查询等任务。