当前位置: 首页 > news >正文

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

目录

    • 简介
    • 首次用户
    • 技术特点
    • 竞品和相关作品
    • 进一步阅读

简介

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 在不同场景的使用,行文主要使用日语。

相关文章:

  • 008-关于FPGA/ZYNQ直接处理图像传感器数据输出的若干笔记(裸板采集思路)
  • Python实现深度迁移学习-CIFAR100-ResNet50
  • c++学习:STL库(框架)+字符串模板类string+vector容器+list链表
  • 免费简单好用的 webshell 在线检测:支持 php、jsp、asp等多格式文件
  • Go 语言 panic 和 recover 详解
  • C //练习 4-9 以上介绍的getch与ungetch函数不能正确地处理压回的EOF。考虑压回EOF时应该如何处理?请实现你的设计方案。
  • 国内有哪些比较好用的低代码开发平台?JNPF算一个
  • 深入Pandas(二):高级数据处理技巧
  • Java 常见缓存详解以及解决方案
  • 硬盘检测软件 SMART Utility mac功能特色
  • web第一次作业
  • 如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点
  • 超维空间M1无人机使用说明书——41、ROS无人机使用yolo进行物体识别
  • 【JAVA基础】JVM之类加载--双亲委派机制
  • C语言——结构体类型(二)【结构体内存对齐,结构体数组】
  • [数据结构]链表的实现在PHP中
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • ES6简单总结(搭配简单的讲解和小案例)
  • JSONP原理
  • Median of Two Sorted Arrays
  • PAT A1050
  • PHP 7 修改了什么呢 -- 2
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue总结
  • zookeeper系列(七)实战分布式命名服务
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 回顾2016
  • 技术胖1-4季视频复习— (看视频笔记)
  • 目录与文件属性:编写ls
  • 判断客户端类型,Android,iOS,PC
  • 配置 PM2 实现代码自动发布
  • 数组的操作
  • 我看到的前端
  • 小试R空间处理新库sf
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​马来语翻译中文去哪比较好?
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #大学#套接字
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (23)Linux的软硬连接
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (javascript)再说document.body.scrollTop的使用问题
  • (阿里云万网)-域名注册购买实名流程
  • (八)c52学习之旅-中断实验
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试