pli*_*han 14 sql linux sorting flat-file
有没有人知道使用类似SQL的声明性查询语言提供简单,快速的平面文件查询的工具?我宁愿不支付将文件加载到DB中的开销,因为输入数据通常在查询运行后几乎立即被抛出.
考虑数据文件"animals.txt":
dog 15
cat 20
dog 10
cat 30
dog 5
cat 40
Run Code Online (Sandbox Code Playgroud)
假设我想为每个独特的动物提取最高值.我想写一些类似的东西:
cat animals.txt | foo "select $1, max(convert($2 using decimal)) group by $1"
Run Code Online (Sandbox Code Playgroud)
我可以得到几乎相同的结果sort:
cat animals.txt | sort -t " " -k1,1 -k2,2nr
Run Code Online (Sandbox Code Playgroud)
而且我总是可以awk从那里进入,但是awk当一种类似SQL的语言看起来如此干净地解决问题时,这一切都感觉有些困难(无法抗拒).
我已经考虑为SQLite编写一个包装器,它会根据输入数据自动创建一个表,我已经研究过在单处理器模式下使用Hive,但我不禁感到这个问题以前已经解决了.我错过了什么吗?此功能是否已由另一个标准工具实现?
HALP!
我从来没有找到一个令人满意的答案来解决我的问题,但我至少找到了使用uniq“-f”选项来解决我的玩具问题的解决方案,这是我不知道的:
cat animals.txt | sort -t " " -k1,1 -k2,2nr \
| awk -F' ' '{print $2, " ", $1}' | uniq -f 1
Run Code Online (Sandbox Code Playgroud)
awk显然,如果输入文件是使用相反顺序的列创建的,则可以完全跳过上面的部分。
不过,我仍然对类似 SQL 的工具抱有希望。
| 归档时间: |
|
| 查看次数: |
5429 次 |
| 最近记录: |