目录
- 简介
- 首次用户
- 技术特点
- 竞品和相关作品
- 进一步阅读
简介
trdsql 是一个使用 sql 作为 DSL 的强大工具:
- 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询
- 与 MySQL,Postgresql,Sqlite 的 Driver 协同,可以实现对应数据库的表与文件的 JOIN 操作
- 与 MySQL,Postgresql,Sqlite 的 Driver 协同时,也能够获得其相应的特色数据处理能力(例如 Windows 函数)
- 支持多种输出格式,例如 CSV、LTSV、JSON、TBLN、Markdown、ASCII Table
首次用户
-
使用
x trdsql
即可自动下载并使用- 在终端运行
eval "$(curl https://get.x-cmd.com)"
即可完成 x 命令安装, 详情参考 x-cmd 官网
- 在终端运行
-
x-cmd 提供1分钟教程,其中包含了 trdsql 命令常用功能的 demo 示例,可以帮你快速上手 trdsql 。
-
使用案例:
# 打印 data.csv 数据中的第 1,2 列 x trdsql "SELECT c1,c2 FROM data.csv"# 使用制表符 \t 分隔输出 x trdsql -od "\t" "SELECT * FROM data.csv"# 指定以 Markdown 格式输出查询结果 x trdsql -omd "SELECT * FROM data.csv"# 指明输入文件的数据格式为 json x trdsql -ijson "SELECT id, name, JSON_EXTRACT(attribute,'$.country') FROM data"
技术特点
- trdsql 的输入源非常多样,因此非常灵活方便:
- 压缩文件作为数据输入源,非常适合处理冷数据
- 多个文件为输入源,支持 glob 模式
- stdin 作为输入源,方便与系统命令进行协同处理
- 相比竞品,trdsql 能够利用相应的 sql driver 的能力:
- 为文件数据提供更丰富的处理能力
- 能够对文件和 db 中的 table 数据进行联合处理
- trdsql 采用了 gojq 进行 JSON 的处理,从而也引入了强大的 jq 选择器
- trdsql 对 JSON 的数据源有一点的结构要求,对于复杂的 JSON 处理,trdsql 可以会略有局限。用户可以考虑使用 jq, yq, dasel 进行预处理,转换成适合 sql 处理的行模式,再发挥 trdsql 的能力。
竞品和相关作品
- 以下 cli 项目也提供采用 sql 作为 DSL 处理 csv 数据:
- q 是一个 Python 项目
- textql 与 trdsq l采用了 go,但从官网上看已经很久没有更新了
- 作者使用 trdsql 还完成了了一个使用 sql 来查询 cpu,内存等本机状态的 cli 工具,sql 爱好者可以去围观: psutilsql
进一步阅读
- trdsql 源代码 - trdsql 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 trdsql 和参与社区贡献。
- noborus: trdsql - 该项目作者提供的文档,详细介绍了 trdsql 在不同场景的使用,行文主要使用日语。