Czy ktoś wie o jakichkolwiek narzędziach do zapewnienia prostych, szybkich zapytań o płaskie pliki przy użyciu języka deklaratywnego zapytań podobnego do SQL? Wolałbym nie płacić narzut ładowania pliku do bazy danych, ponieważ dane wejściowe są zwykle wyrzucane prawie natychmiast po uruchomieniu zapytania.Proste, szybkie zapytania SQL dla plików płaskich
Rozważmy plik danych „animals.txt”:
dog 15
cat 20
dog 10
cat 30
dog 5
cat 40
Załóżmy, że chcemy, aby wyodrębnić najwyższą wartość dla każdego unikalnego zwierzęcia. Chciałbym napisać coś takiego:
cat animals.txt | foo "select $1, max(convert($2 using decimal)) group by $1"
mogę dostać prawie taki sam wynik używając sort
:
cat animals.txt | sort -t " " -k1,1 -k2,2nr
I zawsze mogę wpaść awk
stamtąd, ale to wszystko czuje się trochę awk
oddział (nie mógł się oprzeć), gdy język podobny do języka SQL mógłby rozwiązać problem tak czysto.
Zastanawiałem się nad napisaniem otoki dla SQLite, która automatycznie tworzyłaby tabelę na podstawie danych wejściowych, i przyjrzałem się używaniu Hive w trybie jednoprocesorowym, ale nie mogę oprzeć się wrażeniu, że ten problem ma zostało rozwiązane wcześniej. Czy czegoś brakuje? Czy ta funkcjonalność jest już wdrożona przez inne standardowe narzędzie?
Halp!
Chciałbym móc zrobić wszystko od powłoki, której to rozwiązanie nie obsługuje. – plinehan
Który? Powershell to bash na sterydach, który pozwala zrobić wszystko od powłoki. Jeśli chodzi o program OrmLite (który jest tym, czego bym użył), piszesz program linii, który importuje wszystkie dane do bazy danych, a następnie możesz użyć programu sqlite3.exe do zapytania z wiersza poleceń. – mythz