Rust API
Установка
API DuckDB Rust можно установить с crates.io. Подробности можно найти на docs.rs.
Базовое использование API
duckdb-rs — это удобная обертка над DuckDB C API. Подробности см. в README.
Инициализация и завершение
Для использования DuckDB необходимо сначала инициализировать обработчик Connection с помощью Connection::open(). Connection::open() принимает в качестве параметра файл базы данных для чтения и записи. Если файла базы данных не существует, он будет создан (расширение файла может быть .db, .duckdb, или любым другим). Также можно использовать Connection::open_in_memory() для создания базы данных в памяти. Обратите внимание, что для базы данных в памяти данные не сохраняются на диск (т.е. все данные теряются при выходе из процесса).
use duckdb::{params, Connection, Result};
let conn = Connection::open_in_memory()?; Вы можете conn.close() обработчик Connection вручную или просто исключить его из области видимости. Мы реализовали Drop-трейт, который автоматически закроет подлежащее подключение к базе данных.
Запросы
SQL-запросы можно отправлять в DuckDB, используя метод execute() подключений, или можно предварительно подготовить оператор, а затем выполнить запрос.
#[derive(Debug)]
struct Person {
id: i32,
name: String,
data: Option<Vec<u8>>,
}
conn.execute(
"INSERT INTO person (name, data) VALUES (?, ?)",
params![me.name, me.data],
)?;
let mut stmt = conn.prepare("SELECT id, name, data FROM person")?;
let person_iter = stmt.query_map([], |row| {
Ok(Person {
id: row.get(0)?,
name: row.get(1)?,
data: row.get(2)?,
})
})?;
for person in person_iter {
println!("Found person {:?}", person.unwrap());
} Присоединённый модуль
Клиент Rust поддерживает DuckDB API присоединённого модуля для массового вставки данных. Например:
fn insert_rows(conn: &Connection) -> Result<()> {
let mut app = conn.appender("foo")?;
app.append_rows([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]])?;
Ok(())
}
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/api/rust.html