SQL на csv
Прикольный рецепт как выполнять SQL запросы на CSV-файле: данные загружаются в in-memory sqlite, а там уже можно делать с ними что угодно.
Чтобы не запоминать зубодробительную строку, можно добавить функцию в ~/.bash_aliases
:
function sqlcsv() {
filename=$1
shift
sqlite3 :memory: -cmd '.mode csv' -cmd ".import $filename data" "$@"
}
Причем можно использовать как интерактивный режим, если передать только имя файла:
$ sqlcsv rus_cities.csv
SQLite version 3.37.2 2022-01-06 13:25:41
Enter ".help" for usage hints.
sqlite> select * from data where source='омск' limit 3;
"омск","кадников","о"
"омск","казань","о"
"омск","калач","о"
так и неинтерактивный, если передать один или несколько запросов:
$ sqlcsv rus_cities.csv "SELECT DISTINCT(source) from data where source like 'ц%';" \
"SELECT COUNT(DISTINCT(source)) from data WHERE source like '%ц' or source like '%цы';"
"цивильск"
"цимлянск"
"циолковский"
15
Конечно, это все можно сделать и в Excel/аналоге, но я лично потрачу больше времени на гугление нужных формул, чем на написание SQL-запроса.
Комментарии