【发布时间】:2011-01-17 16:33:24
【问题描述】:
有没有人知道使用类似 SQL 的声明式查询语言提供简单、快速的平面文件查询的工具?我宁愿不支付将文件加载到数据库中的开销,因为输入数据通常在查询运行后几乎立即被丢弃。
考虑数据文件“animals.txt”:
dog 15
cat 20
dog 10
cat 30
dog 5
cat 40
假设我想为每个独特的动物提取最高值。我想写一些类似的东西:
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 的语言似乎可以如此干净地解决问题时,这一切都感觉有点awkward(无法抗拒)。
我考虑过为 SQLite 编写一个包装器,它会根据输入数据自动创建一个表,并且我研究过在单处理器模式下使用 Hive,但我不禁觉得这个问题一直存在之前解决了。我错过了什么吗?此功能是否已由其他标准工具实现?
停下来!
【问题讨论】:
标签: sql linux sorting flat-file