// Basic example copy from README extern crate duckdb; use duckdb::{ arrow::{record_batch::RecordBatch, util::pretty::print_batches}, params, Connection, Result, }; #[derive(Debug)] struct Person { _id: i32, name: String, data: Option>, } fn main() -> Result<()> { let conn = Connection::open_in_memory()?; conn.execute_batch( r"CREATE SEQUENCE seq; CREATE TABLE person ( id INTEGER PRIMARY KEY DEFAULT NEXTVAL('seq'), name TEXT NOT NULL, data BLOB ); ", )?; let me = Person { _id: 0, name: "Steven".to_string(), data: None, }; conn.execute( "INSERT INTO person (name, data) VALUES (?, ?)", params![me.name, me.data], )?; // query table by rows 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()); } // query table by arrow let rbs: Vec = stmt.query_arrow([])?.collect(); print_batches(&rbs).unwrap(); Ok(()) }