x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

2024-01-08 05:59:18

简介

trdsql 是一个使用 sql 作为 DSL 的强大工具:

  1. 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询
  2. 与 MySQL,Postgresql,Sqlite 的 Driver 协同,可以实现对应数据库的表与文件的 JOIN 操作
  3. 与 MySQL,Postgresql,Sqlite 的 Driver 协同时,也能够获得其相应的特色数据处理能力(例如 Windows 函数)
  4. 支持多种输出格式,例如 CSV、LTSV、JSON、TBLN、Markdown、ASCII Table

首次用户

  1. 使用 x trdsql 即可自动下载并使用

    • 在终端运行 eval "$(curl https://get.x-cmd.com)" 即可完成 x 命令安装, 详情参考 x-cmd 官网
  2. x-cmd 提供1分钟教程,其中包含了 trdsql 命令常用功能的 demo 示例,可以帮你快速上手 trdsql 。

  3. 使用案例

    trdsql-1min-cn

    # 打印 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"
    

技术特点

  1. trdsql 的输入源非常多样,因此非常灵活方便:
    1. 压缩文件作为数据输入源,非常适合处理冷数据
    2. 多个文件为输入源,支持 glob 模式
    3. stdin 作为输入源,方便与系统命令进行协同处理
  2. 相比竞品,trdsql 能够利用相应的 sql driver 的能力:
    1. 为文件数据提供更丰富的处理能力
    2. 能够对文件和 db 中的 table 数据进行联合处理
  3. trdsql 采用了 gojq 进行 JSON 的处理,从而也引入了强大的 jq 选择器
  4. trdsql 对 JSON 的数据源有一点的结构要求,对于复杂的 JSON 处理,trdsql 可以会略有局限。用户可以考虑使用 jq, yq, dasel 进行预处理,转换成适合 sql 处理的行模式,再发挥 trdsql 的能力。

竞品和相关作品

  1. 以下 cli 项目也提供采用 sql 作为 DSL 处理 csv 数据:
    1. q 是一个 Python 项目
    2. textql 与 trdsq l采用了 go,但从官网上看已经很久没有更新了
  2. 作者使用 trdsql 还完成了了一个使用 sql 来查询 cpu,内存等本机状态的 cli 工具,sql 爱好者可以去围观: psutilsql

进一步阅读

  • trdsql 源代码 - trdsql 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 trdsql 和参与社区贡献。
  • noborus: trdsql - 该项目作者提供的文档,详细介绍了 trdsql 在不同场景的使用,行文主要使用日语。

文章来源:https://blog.csdn.net/edwinjhlee/article/details/135437684
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。