pub fn for_each_sqllog<R, F>(
reader: R,
callback: F,
) -> Result<usize, ParseError>Expand description
流式解析 Sqllog,对每个解析后的记录调用回调函数
这个函数适合处理大文件,因为它不会将所有记录加载到内存中。 它会逐条读取并解析记录,然后立即调用回调函数处理。
§参数
reader- 实现了Readtrait 的数据源(如 File、&u8 等)callback- 处理每个Sqllog的回调函数
§返回
Ok(usize)- 成功处理的记录数量Err(ParseError)- 解析或读取错误
§示例
use dm_database_parser_sqllog::for_each_sqllog;
use std::fs::File;
use std::io::BufReader;
let file = File::open("sqllog.log")?;
let reader = BufReader::new(file);
let count = for_each_sqllog(reader, |sqllog| {
println!("EP: {}, 用户: {}, SQL: {}",
sqllog.meta.ep,
sqllog.meta.username,
sqllog.body);
})?;
println!("处理了 {} 条记录", count);