sql - 简单、快速的平面文件 SQL 查询

标签 sql linux sorting flat-file

有没有人知道有什么工具可以使用类似 SQL 的声明性查询语言来提供简单、快速的平面文件查询?我宁愿不支付将文件加载到数据库的开销,因为输入数据通常在查询运行后几乎立即被丢弃。

考虑数据文件“animals.txt”:

dog 15
cat 20
dog 10
cat 30
dog 5
cat 40

假设我想提取每只独特动物的最高值(value)。我想写这样的东西:

cat animals.txt | foo "select $1, max(convert($2 using decimal)) group by $1"

我可以使用 sort 得到几乎相同的结果:

cat animals.txt | sort -t " " -k1,1 -k2,2nr

而且我总是可以从那里进入 awk,但是当类似 SQL 的语言似乎如此干净利落地解决问题。

我考虑过为 SQLite 编写一个包装器,它会根据输入数据自动创建一个表,并且我研究过在单处理器模式下使用 Hive,但我不禁觉得这个问题一直存在之前解决了我错过了什么吗?此功能是否已由其他标准工具实现?

暂停!

最佳答案

我写了TxtSushi主要是对平面文件进行 SQL 选择。这是您示例的命令链(所有这些命令都来自 TxtSushi):

tabtocsv animals.txt | namecolumns - | tssql -table animals - \
'select col1, max(as_int(col2)) from animals group by col1'

namecolumns 是必需的,因为 animals.txt 没有标题行。通过查看 example scripts,您可以快速了解可能发生的情况。 .主页底部还有指向类似工具的链接。

关于sql - 简单、快速的平面文件 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2277960/

相关文章:

c - 文件 * ..=标准输出 : Error initializer element is not constant

java - 创建反转顺序的比较器的最佳方法

php - 我可以使用 MYSQLI 和 PHP 将多个值绑定(bind)为单个参数吗?

MySQL 加入更新

sql - PostgreSQL。改善指标

mysql - 选择总计的总和以及带日期子句的不同总和(不带子查询)

java - 我的java版本是jdk 1.7.但是maven使用jdk 1.6

linux - 将多个 SPI 端口(设备)注册到单个 SPI 平台驱动程序?

javascript - 如何在 React.js 中对数据对象数组进行排序

c - 这段代码是哪种排序技术?