Expand description
§DM Database Parser - SQL Log
一个高性能的达梦数据库 SQL 日志解析器,支持批量解析和流式处理。
§功能特性
- 高性能解析: 使用零拷贝和预编译正则表达式优化性能
- 灵活的 API: 支持批量解析和流式处理两种模式
- 完整的类型安全: 使用强类型结构表示日志数据
- 详细的错误信息: 提供清晰的错误类型和消息
§快速开始
§从文件迭代处理 Sqllogs(推荐)
use dm_database_parser_sqllog::iter_records_from_file;
for result in iter_records_from_file("sqllog.txt")? {
match result {
Ok(sqllog) => {
println!("时间戳: {}", sqllog.ts);
println!("用户: {}", sqllog.meta.username);
println!("SQL: {}", sqllog.body);
}
Err(e) => eprintln!("解析错误: {}", e),
}
}§从文件批量加载并解析为 Sqllog(自动并行处理)
use dm_database_parser_sqllog::parse_records_from_file;
// parse_records_from_file 现在直接返回 Vec<Sqllog>,内部自动使用并行处理
let (sqllogs, errors) = parse_records_from_file("sqllog.txt")?;
println!("成功解析 {} 条 SQL 日志", sqllogs.len());
println!("遇到 {} 个错误", errors.len());
// 直接使用解析好的 Sqllog
for sqllog in sqllogs {
println!("用户: {}, SQL: {}", sqllog.meta.username, sqllog.body);
}§日志格式
支持的日志格式示例:
2025-08-12 10:57:09.548 (EP[0] sess:123 thrd:456 user:alice trxid:789 stmt:999 appname:myapp) SELECT * FROM table可选的性能指标:
SELECT * FROM table EXECTIME: 10.5(ms) ROWCOUNT: 100(rows) EXEC_ID: 12345.Re-exports§
pub use error::ParseError;pub use sqllog::Sqllog;pub use parser::Record;pub use parser::RecordParser;pub use parser::iter_records_from_file;pub use parser::parse_records_from_file;