万能 SQL 分析工具,太强了!


大家好,我是美丽又可爱的开源小妹!

天气突然一下就冷下来了,大家记得保暖哈,尤其是晚上看球的小伙伴们,不要冷了另外一半哈~~

我们知道,SQL 简单好学,使用也很方便。其实无论是技术还是非技术的工作,都需要对数据进行处理和分析,像是我们常用的 SQL 查询,以及更普遍的 Excel、JSON、CSV 等。

如果是稍微复杂一些的分析,因为各种原因,经常会遇到要打开的文件太大,影响工作进程和效率。

今天小妹来推荐一个小巧但是很强大的 SQL 工具 - dsq,使用它再结合其他工具,完全可以做更多的自动化的分析和处理,非常的棒!

简介

dsq是一个命令行工具,可对数据文件进行 SQL 查询,支持 JSON、CSV、Excel、Parquet 等等数据文件,以下是官方展示的支持的部分文件类型:

市面上类似的工具其实也有不少,作者也做了很细致的研究和分析,得出比较结论:dsq 目前是功能最为全面的,性能最极致的。

项目开源以来,已经在 github 上面获得了接近 3k 的 star。

功能展示

下面小妹来展示一下dsq都有哪些基本的功能。

1、读取单个文件

直接使用 dsq filename 或者 dsq filename "SELECT * FROM {}即可读取。

如小妹电脑中已经准备了一个testdata.json文件,大致内容如下:

1
dsq testdata.json"

1
dsq testdata.json "SELECT * FROM {}"

当然这样直接读取会比较难看,dsq提供了-p 或者 --pretty的参数,来美化成表格内容,这样就可以直观的看了。

喏,这样是不是好看多了?

2、读取处理多个文件

dsq支持同时读取多个文件,只要是支持的文件类型都可以。可以使用 SQL 语句以表格的方式来同时查询各个文件的数据内容,如下:

1
dsq users.csv ages.json "select {0}.name, {1}.age from {0} join {1} on {0}.id = {1}.id"

users.csv ages.json是要查询的两个文件,在上述 select 语句中分别用 {0}、{1}代表。

3、读取 Excel 多个 sheets

Excel 的文件有时候会又多个 sheets,dsq也是支持读取所有sheets的内容的。

比如说multiple-sheets.xlsx这个文件有两个 sheets,可以使用如下的方法来查询 sheet2 里面的内容。

1
dsq multiple-sheets.xlsx "SELECT COUNT() FROM {'Sheet2'} where Country='Canada' and Product='Amarilla'"

4、使用管道传递数据

这个是linux独有的功能,可以直接使用管道符| 来传递数据,相信使用 linux 的同学应该再熟悉不过了,但是这里需要加-s参数来指明传递的文件类型。如:

1
cat testdata.csv | dsq -s csv "SELECT * FROM {} LIMIT 1"
1
cat testdata.parquet | dsq -s parquet "SELECT COUNT(1) FROM {}"

5、文件转换

dsq 支持将 CSV 文件转成 JSON 文件,直接使用下面的命令即可:

1
dsq testdata.csv > testdata.json

除以上的这些基本功能之外,dsq 还支持不少更为复杂的操作,比如正则、缓存等等,可以去官方地址查看更多详细用法。

安装

win系统的话,直接 releases 页面下载即可。

Linux, macOS则按照官方给出的方法,同样很简单的。

关于项目的更多细节、功能,感兴趣的小伙伴可以去项目地址探索~~~

1
github地址:https://github.com/multiprocessio/dsq

写在最后

欢迎加入开源小分队读者交流群,聊天学习摸鱼为主,不定时会分享一些技术要点和优质学习资源,有一群有趣有料的小伙伴在等你哦!

进群方式:开源小分队 公众号后台回复888,按提示操作即可进群。

问君能有几多愁,开源项目解千愁,我们下期再见!

大家的点赞、收藏和评论对小妹非常重要,如文章对你有帮助还请转发支持下,谢谢!


文章作者: 开源小分队
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 开源小分队 !
  目录