Кто-нибудь знает какие-либо инструменты для обеспечения простых и быстрых запросов плоских файлов с использованием 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
, но все это выглядит немного awk
настороженно (не может устоять), когда язык, похожий на SQL, кажется, решает проблему так чисто.
Я подумал о написании оболочки для SQLite, которая будет автоматически создавать таблицу на основе входных данных, и я рассмотрел использование Hive в однопроцессорном режиме, но не могу не почувствовать, что эта проблема была решено раньше. Я что-то пропустил? Эта функция уже реализована другим стандартным инструментом?
Halp!