#avro #odbc #orm #data-query #write-file

odbc-avro

扩展odbc-iter crate功能,增加了查询Avro记录和将整个ResultSet写入Avro对象容器文件数据的能力

4个版本

0.2.1 2020年1月23日
0.2.0 2019年8月28日
0.1.1 2019年8月27日
0.1.0 2019年8月16日

#1842 in 数据库接口


用于 odbc-tools

MIT 许可证

40KB
724

Latest Version Documentation License

此Rust crate扩展了odbc-iter crate的功能,增加了查询Avro记录和将整个ResultSet作为Avro "对象容器文件"数据写入的能力。

示例用法

从查询中写入Avro对象容器文件数据。

use odbc_iter::Odbc;
use odbc_avro::{AvroConfiguration, AvroResultSet, Codec};

let mut connection = Odbc::connect(&std::env::var("DB_CONNECTION_STRING").expect("no DB_CONNECTION_STRING env set")).expect("connect to database");

// Configure handler with default `AvroConfiguration`.
let mut db = connection.handle_with_configuration(AvroConfiguration::default());

// For example query all table data from database.
let data = db.query(r#"SELECT * FROM sys.tables"#).expect("query failed");

// You can use `File` instead to write Avro object container file or any other `Write` type.
let mut buf = Vec::new();

// Write all rows as uncompressed Avro object container file where rows are represented as record object named "result_set".
data.write_avro(&mut buf, Codec::Null, "result_set").expect("write worked");

// Now `buf` contains all rows from `sys.tables` table serialized Avro object container file.

依赖项

~5.5–8MB
~144K SLoC