基本语句:
q "SELECT COUNT(*) FROM ./chongchong.csv WHERE c3 >32.3"ps -ef | q -H "SELECT UID,COUNT(*) count FROM - GROUP BY UID ORDER BY count DESC LIMIT 3"
多编码支持:
非英语用户:q完全支持所有类型的编码。用 -e data-encoding设置输入数据编码,-Q query-encoding设置查询编码,并使用 -E output-encoding设置输出编码。默认会根据实际使用上下文对三个参数做合理设置。
BOM支持:q允许读取包含BOM的UTF8文件的:使用-e utf-8-sig为了这。后续计划将BOM处理与编码本身分开,将允许支持所有编码的 BOM。
安装
Q支持跨平台运行,但是需要基础的python环境支持。可以在官方Github托管仓库下载(github/harelba/q/releases),最新版本为2.0.19。
Linux可以通过rpm或者deb包安装:
安装:
rpm -ivh q-text-as-data-2.0.19-1.x86_64.rpmsudo dpkg -i q-text-as-data_2.0.19-2_amd64.deb
或者对旧版本的升级使用:
rpm -U q-text-as-data-2.0.19-1.x86_64.rpm
MacOS下可以使用brew来安装:
brew install q
windows下可以下,对应的安装包(q-AMD64-Windows-installer.exe
和q-AMD64-Windows.exe)安装。
用法
q的用法很简单,基本格式如下:
q 标志 "sql查询"
最简单的一个例子是
q "SELECT * FROM myfile"
这结果和cat myfile一样。
Q的查询表达式应该是一个类似SQL的查询,但是其中from的是用的csv的文件名代替表名,也可以用-表示标准输入,这样就可以接入到管道中。可以将多个文件用作一个表,方法是用+将它们窜起来,写成:
filename1+filename2+...
也可以使用shell 通配符,比如:
my_files*.csv
-H选项表示输入包含标题行。这时将自动探测列名,并可在查询中使用。如果未提供此选项,则列将命名为cX,从1开始,比如:
q "SELECT c3,c8 from ..."
-d选项指定输入分隔符。
列类型由工具自动检测,无需强制转换。
注意,有一个选项 --as-text,强制所有列都被视为文本列。
关于列的内容,根据 sqlite 标准,需要在带有反引号的查询中使用包含空格的列名。
完全支持查询/输入/输出编码,可以用-e,-E和-Q按需要控制编码。
q支持所有sqlite3 SQL语法,包括跨文件的连接(为每个表使用别名)。
查询
q 获取的每个参数都是一个完整的SQL查询。所有的查询都依次执行,将结果输出到标准输出。请注意,数据加载仅完成一次,因此在同一命令行上执行多个查询时,只有第一个会花费很长时间。其余的将查询会立即执行出结果。
查询语句中任何标准 SQL 表达式、条件(WHERE 和 HAVING)、GROUP BY、ORDER BY 等都是允许的。
WHERE子句中支持 JOIN 和子查询, ROM 子句中不支持。执行 JOIN 时使用表别名。
所有SQL 语法都是基于sqlite的语法。
附加功能
q 支持 SQLite 不支持的几个附加功能。要获取其列表,请运行 q -L,其中列出了它们并描述了它们的语法。
它们可以用作任何标准的 sql 函数。
实现
q的实现是用Python写的内存数据库,本身支持SELECT语句,包括 JOIN(目前仅在 WHERE 子句中支持子查询)。如果想对数据做进一步的分析,可以使用 --save-db-to-disk将结果表写入sqlite数据库文件的选项,然后使用 seqlite3为了独立于q本身对数据执行查询。
限制
不支持 FROM子查询
不支持公用表表达式 (CTE)
不支持文件名中的空格。使用stdin将数据传送到q,或重命名文件。
尚不支持某些罕见的子查询情况。
配合
标准的Linux shell工具很棒, Linux 整体理念是为工作的每个部分混合搭配最好的工具。q将SQL的功能添加到Linux工具集中,而不会失去任何其他工具的优势。q可以与其他 Linux 工具一起配合使用,就像find,awk/sed 和 grep 一起使用(管道)。
需要注意是, Linux工具将文本视为文本而不是数据。从这个意义上说,可以将q视为元工具,它提供对 SQL 提供的所有数据相关工具(例如表达式、排序、分组、聚合等)的访问。
总结
标题:高效CSV文件记录查询解决方案:多平台SQL化工具
链接:https://www.ltthb.com/news/sypc/129980.html
版权:文章转载自网络,如有侵权,请联系删除!
用户评论
这款工具看起来超好使,终于可以方便地管理那些大数据的CSV文件了!
有15位网友表示赞同!
对我们这个团队来说简直是福音!以前查询CSV数据费时费力,现在用 SQL 语句就能搞定简直让人惊喜。
有19位网友表示赞同!
多平台支持太棒了!不管是用 Windows、Mac 还是 Linux,都能轻松操作。
有14位网友表示赞同!
希望后续能支持更多的数据库类型,那样就更完美了!
有11位网友表示赞同!
这个工具能解放我们大量时间,把那些无聊重复的工作交给它就好了。
有9位网友表示赞同!
界面看起来很简洁易用,上手速度应该比较快。
有19位网友表示赞同!
功能强大,可以自定义查询条件,真的很符合我们的需求。
有16位网友表示赞同!
如果能提供一些数据可视化图表的功能,那就更棒了!
有19位网友表示赞同!
之前总是遇到CSV文件数据不一致的问题,希望这个工具能够帮助我们避免这种麻烦。
有9位网友表示赞同!
这个名字听起来很专业很有技术感!
有14位网友表示赞同!
期待能看到一个中文版的教程或文档,更容易上手。
有6位网友表示赞同!
我一直在寻找一款适合我们公司使用的数据查询工具,这款产品看起来很不错!
有15位网友表示赞同!
价格合适吗?希望能够有一个免费试用版,方便我们测试一下。
有18位网友表示赞同!
这款工具是否支持大规模数据的查询?如果能处理 millions 级的数据那简直太厉害了!
有5位网友表示赞同!
不知道这个工具的性能怎么样?能否快速响应大型查询请求?
有13位网友表示赞同!
会不会有 API 接口我们可以集成到其他应用中使用呢?
有5位网友表示赞同!
这个工具在数据清洗方面的功能有哪些?是否支持一些常见的清理任务?
有18位网友表示赞同!
感觉这款工具应该会帮助很多开发者提高工作效率!
有8位网友表示赞同!
期待能看到更多产品的更新和改进,例如新增的功能或性能优化!
有5位网友表示赞同!