for_each_sqllog

Function for_each_sqllog 

Source
pub fn for_each_sqllog<R, F>(
    reader: R,
    callback: F,
) -> Result<usize, ParseError>
where R: Read, F: FnMut(&Sqllog),
Expand description

流式解析 Sqllog,对每个解析后的记录调用回调函数

这个函数适合处理大文件,因为它不会将所有记录加载到内存中。 它会逐条读取并解析记录,然后立即调用回调函数处理。

§参数

  • reader - 实现了 Read trait 的数据源(如 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);