zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

2023-03-07 09:47:32 时间
将开源小分队设为星标 精品文章第一时间读

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

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

我们知道,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文件,大致内容如下:

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

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

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

2、读取处理多个文件

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

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 里面的内容。

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

4、使用管道传递数据

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

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

5、文件转换

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

dsq testdata.csv > testdata.json

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

安装

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

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

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

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

写在最后

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