跳到主要内容

Databend Rust 驱动

官方 Rust 驱动,为 Rust 应用程序提供原生连接、async/await 支持和全面的类型安全。

安装

将驱动添加到你的 Cargo.toml

[dependencies]
databend-driver = "0.7"
tokio = { version = "1", features = ["full"] }

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


主要特性

  • Async/Await 支持:专为现代 Rust 异步编程构建
  • 类型安全:与 Rust 的类型系统进行强类型映射
  • 连接池:高效的连接管理
  • Stage 操作:向 Databend Stage 上传或下载数据
  • 流式结果:高效处理大型结果集

数据类型映射

基础类型

DatabendRust备注
BOOLEANbool
TINYINTi8, u8
SMALLINTi16, u16
INTi32, u32
BIGINTi64, u64
FLOATf32
DOUBLEf64
DECIMALString保留精度
VARCHARStringUTF-8 编码
BINARYVec<u8>

日期/时间类型

DatabendRust备注
DATEchrono::NaiveDate需要 chrono crate
TIMESTAMPchrono::NaiveDateTime需要 chrono crate

复杂类型

DatabendRust备注
ARRAY[T]Vec<T>支持嵌套数组
TUPLE[T, U](T, U)多元素元组
MAP[K, V]HashMap<K, V>键值映射
VARIANTStringJSON 编码
BITMAPStringBase64 编码
GEOMETRYStringWKT 格式

基本用法

以下示例演示 DDL、写入和查询操作:

use databend_driver::Client;
use tokio_stream::StreamExt;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 连接到 Databend
let client = Client::new("<your-dsn>".to_string());
let conn = client.get_conn().await?;

// DDL:创建表
conn.exec("CREATE TABLE IF NOT EXISTS users (id INT, name VARCHAR, created_at TIMESTAMP)")
.await?;

// 写入:插入数据
conn.exec("INSERT INTO users VALUES (1, 'Alice', '2023-12-01 10:00:00')")
.await?;
conn.exec("INSERT INTO users VALUES (2, 'Bob', '2023-12-01 11:00:00')")
.await?;

// 查询:查询数据
let mut rows = conn.query_iter("SELECT id, name, created_at FROM users ORDER BY id")
.await?;

while let Some(row) = rows.next().await {
let (id, name, created_at): (i32, String, chrono::NaiveDateTime) =
row?.try_into()?;
println!("User {}: {} (created: {})", id, name, created_at);
}

Ok(())
}

相关资源

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