5个版本
0.1.12 | 2023年9月17日 |
---|---|
0.1.11 | 2023年9月17日 |
0.1.8 | 2023年7月22日 |
#529 in 数据库接口
147 每月下载次数
22KB
358 行
Diesel Streamer
一个用于流式传输大型表的柴油小插件。它目前允许使用基于游标的流式传输策略来流式传输大型序列表。
安装
对于常规同步运行时
[dependencies]
diesel-streamer = { version = "0.1.12", features = ["sync"]}
对于tokio异步运行时
[dependencies]
diesel-streamer = { version = "0.1.12", features = ["async"]}
示例用法
流式传输具有 serial_field
的 SomeTable
use diesel_streamer::stream_serial_table;
fn main() {
use crate::schema::some_table::dsl::{some_table, serial_field};
let mut conn = pool.get().await.unwrap();
// with default chunk size of 500
stream_serial_table!(some_table, serial_field, conn, |streamed_table_data: Vec<SomeTable>| {
// do work here
dbg!(streamed_table_data);
});
// specify chunk size, 130
stream_serial_table!(some_table, serial_field, conn, 130, |streamed_table_data: Vec<SomeTable>| {
// do work here
dbg!(streamed_table_data);
});
// with cursor's beginning, 5.
stream_serial_table!(some_table, serial_field, conn, 130, 5, |streamed_table_data: Vec<SomeTable>| {
// do work here
dbg!(streamed_table_data);
});
// with cursor's end, 50,
stream_serial_table!(some_table, serial_field, conn, 130, 5, 50, |streamed_table_data: Vec<SomeTable>| {
// do work here
dbg!(streamed_table_data);
});
}
默认值
- 块大小:500
- 游标开始:表中
serial_field
的最低值 - 游标结束:表中
serial_field
的最高值
注意:通常,只有在处理相关表时可能遇到OOM错误的情况下,才应考虑流式传输。
贡献
使用 docker-compose up
启动测试数据库,或者简单地像在 .env.sample
中显示的那样指定DB URL。
运行 cargo test
进行测试。
许可
根据您的选择,受Apache License 2.0或MIT许可的许可。 Apache License, Version 2.0 或 MIT license除非您明确声明,否则任何有意提交以包含在本crate中的贡献,根据Apache-2.0许可证定义,应如上所述双重许可,而不附加任何额外条款或条件。