我们一直在命令行使用grep,cut,sort,uniq和join来进行数据分析.他们工作得很好,虽然有缺点.例如,您必须为每个工具提供列号.我们经常有宽文件(很多列)和一个列标题,用于给出列名.实际上,我们的文件看起来很像SQL表.我确定有一个驱动程序(ODBC?)将操作分隔的文本文件,以及一些将使用该驱动程序的查询引擎,所以我们可以在我们的文本文件上使用SQL查询.由于进行分析通常是临时的,因此查询新文件(仅使用我在此目录中指定的文件)而不是在某些配置中声明特定表必须是最小化设置.
实际上,最简单的是什么?也就是说,最容易设置和用于应用文本文件的SQL引擎和驱动程序?
David Malcolm编写了一个名为" squeal "(以前称为"show")的小工具,它允许您使用类似SQL的命令行语法来解析各种格式的文本文件,包括CSV.
关于squeal主页的一个例子:
$ squeal "count(*)", source from /var/log/messages* group by source order by "count(*)" desc count(*)|source | --------+--------------------+ 1633 |kernel | 1324 |NetworkManager | 98 |ntpd | 70 |avahi-daemon | 63 |dhclient | 48 |setroubleshoot | 39 |dnsmasq | 29 |nm-system-settings | 27 |bluetoothd | 14 |/usr/sbin/gpm | 13 |acpid | 10 |init | 9 |pcscd | 9 |pulseaudio | 6 |gnome-keyring-ask | 6 |gnome-keyring-daemon| 6 |gnome-session | 6 |rsyslogd | 5 |rpc.statd | 4 |vpnc | 3 |gdm-session-worker | 2 |auditd | 2 |console-kit-daemon | 2 |libvirtd | 2 |rpcbind | 1 |nm-dispatcher.action| 1 |restorecond |
q-直接在CSV或TSV文件上运行SQL:
https://github.com/harelba/q