qsv 上手记录:Rust 写的表格数据命令行处理工具
qsv 是一个处理表格数据的命令行程序,输入格式支持 CSV、Excel、TSV 等常见结构,能完成查询、切片、索引、分析、过滤、转换、排序、验证、连接和格式化等操作。项目用 Rust 编写,遵循 MIT 协议,源码托管在 GitHub。
功能与特点
- 跨平台:在 Linux、macOS、Windows 上均可运行。
- 性能表现:底层基于 Rust 和 Polars,线程上利用多核并行、索引、缓存和流式处理。处理 GB 级甚至更大文件的场景中,速度通常优于 Python pandas、awk、sed 这类实现。
- 命令覆盖范围:提供超过 50 个数据处理子命令,包括:
apply cat count datefmt diff edit excel explode fetch foreach
join json luau pivotp select slice sort sqlp to transpose
每个命令可以通过 qsv --help 查看参数和用法,子命令命名与过滤器思路类似,便于按需记忆。
- 管道组合:命令之间通过标准输入输出衔接,和 shell 管道配合可以当场拼出处理流程。例如下面这行命令统计每列的类型、最大/最小值、标准差等指标,并把结果渲染成对齐表格:
qsv stats data.csv | qsv table
- 图形界面:qsv pro 版本提供 GUI 操作界面,面向不想直接操作命令行的用户。
在线体验
官方提供了一个不需要装包的在线数据处理环境:
页面上给常用数据操作提供了可视化交互界面,适合先验证功能或处理小规模数据。
下载安装
从官方渠道下载对应系统的可执行文件,将文件所在目录加入系统环境变量 PATH 后,即可在任意位置调用 qsv。安装完成后可通过下面的命令检查环境:
qsv --listInstalled commands (60):
apply Apply series of transformations to a column
behead Drop header from CSV file
cat Concatenate by row or column
count Count records
datefmt Format date/datetime strings
dedup Remove redundant rows
describegpt Infer extended metadata using a LLM
diff Find the difference between two CSVs
edit Replace a cell's value specified by row and column
enum Add a new column enumerating CSV lines
excel Exports an Excel sheet to a CSV
...
常用的启动方式很简单,比如统计行数:
qsv count data.csv
适用场景
qsv 填补的是轻量文本工具(grep/awk)与通用编程语言(Python/R)之间的空档:既不需要进入交互式环境写脚本,也能直接面对较大的结构化数据跑出结果。对于日志、导出表、批量生成的 CSV 这类需要快速统计和清洗的任务,qsv 可以省掉不少临时脚本的功夫。