有没有人知道有什么工具可以使用类似 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/