見出し画像

シェルからSQL実行する(csvq-01,MAC,zsh)

概要

SQLを実行して何か結果を出すということは、データベースソフトの機能を使用しなくても、SQL実行をサポートしたツールを使用しても可能である。
csvqはcsvファイルに対してSQLを使用した操作が行えるツールである。
MACなのでHomebrewで導入しておく。

-zsh % brew install csvq
Running `brew update --auto-update`...
==> Fetching csvq
==> Downloading https://ghcr.io/v2/homebrew/core/csvq/manifests/1.17.11
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/csvq/blobs/sha256:3acf6913cceb2
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring csvq--1.17.11.ventura.bottle.tar.gz
🍺  /usr/local/Cellar/csvq/1.17.11: 6 files, 15.2MB
==> Running `brew cleanup csvq`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

どうもvalues()を使った記法は使用できないようであるが、FROM抜きやDUAL使用のSELECTは使用できる。

-zsh % csvq "select 5+4*3/2-1;"                            
+-------------------+
| 5 + 4 * 3 / 2 - 1 |
+-------------------+
|                10 |
+-------------------+
-zsh % csvq "select 5+4*3/2-1 from DUAL;"
+-------------------+
| 5 + 4 * 3 / 2 - 1 |
+-------------------+
|                10 |
+-------------------+

文末のセミコロンはなくても動作は変わらない。

-zsh % csvq "select 5+4*3/2-1"           
+-------------------+
| 5 + 4 * 3 / 2 - 1 |
+-------------------+
|                10 |
+-------------------+
-zsh % csvq "select 5+4*3/2-1 from DUAL" 
+-------------------+
| 5 + 4 * 3 / 2 - 1 |
+-------------------+
|                10 |
+-------------------+

計算するだけであれば、calcというサブコマンドも使用できる。ダミーでstdinに何か入れないといけないのが美しくないが。。。

-zsh % echo | csvq calc "5 + 4 * 3 / 2 - 1 "
10% 

こんな使い方もできる。

-zsh % csvq "var @i0:=5;var @i1:=4;var @i2:=3;var @i3:=2;var @i4:=1;select @i0+@i1*@i2/@i3-@i4;"
+-----------------------------+
| @i0 + @i1 * @i2 / @i3 - @i4 |
+-----------------------------+
|                          10 |
+-----------------------------+

これは便利なこともありそうである。

実行環境

-zsh % sw_vers
ProductName:		macOS
ProductVersion:		13.2.1
BuildVersion:		22D68
-zsh % csvq -v
csvq version 1.17.11

参照

シェルからSQL実行する(sqlite3-01,MAC,zsh)


この記事が気に入ったらサポートをしてみませんか?