21 个版本
0.10.3 | 2024年3月31日 |
---|---|
0.10.1 | 2023年12月20日 |
0.10.0 | 2023年8月1日 |
0.9.4 | 2023年6月7日 |
0.2.1 |
|
#255 在 解析实现
2,215 每月下载量
在 2 crates 中使用
56KB
1K SLoC
qsv CSV 嗅探器
qsv-sniffer
提供了推断 CSV 文件元数据(分隔符选择、引号字符、字段数量、字段名称、字段数据类型等)的方法。请参阅文档以获取更多信息。
它是 csv-sniffer 的独立分支,具有以下额外功能,检测
- utf-8 编码
- 字段名称
- 行数
- 平均记录长度
- 额外的数据类型 - 日期/日期时间以及 NULL
- 更智能的布尔类型检测 - "true" 和 "false" 不是它检测的唯一布尔值。现在它还检测 1/0、yes/no、y/n、true/false、t/f - 不区分大小写
ℹ️ 注意: 此分支针对 qsv 进行优化,其开发将主要受 qsv 需求的支配。
设置
作为命令行应用程序
cargo install qsv-sniffer
这将安装一个名为 sniff
的二进制文件。
作为库
将其添加到您的 Cargo.toml
[dependencies]
qsv-sniffer = "0.9"
并将此添加到您的 crate 根目录
use qsv_sniffer;
功能标志
cli
- 构建名为sniff
的二进制文件runtime-dispatch-simd
- 启用在运行时检测 SIMD 功能,这允许使用 SSE2 和 AVX2 代码路径(仅在 Intel 和 AMD 架构上有效。在其他架构上忽略)。generic-simd
- 启用与架构无关的 SIMD 功能,但仅适用于 Rust 夜间构建版本。
这些 SIMD 功能互斥且可提高采样性能。
示例
此示例展示了如何编写一个简单的命令行工具以发现 CSV 文件的元数据
use qsv_sniffer;
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() != 2 {
eprintln!("Usage: {} <file>", args[0]);
::std::process::exit(1);
}
// sniff the path provided by the first argument
match qsv_sniffer::Sniffer::new().sniff_path(&args[1]) {
Ok(metadata) => {
println!("{}", metadata);
},
Err(err) => {
eprintln!("ERROR: {}", err);
}
}
}
此示例是该 crate 的主要二进制文件。在源目录中,可以像以下这样运行它
$ cargo run -- tests/data/library-visitors.csv
依赖项
~7–14MB
~137K SLoC