fsql は Perl製のソフトウェアです。CSV形式などのテキストファイルをオプションで指定し、クエリーを実行できます。CSV形式などのテキストファイルで既にデータソースがあり、すぐに中身の調査をしたいが、テーブルを定義したりするのは面倒だという方に便利なソフトウェアです。

主な特徴について

1) データベースやテーブルの定義は不要です。

RDBMSでは、データベースやテーブルをつくり、データソースをインポートした後にSQLを記述して実行します。fsqlならばこの手間がありません。簡単な検索や集計処理を行う場合、すぐに結果を得ることができます。結果を利用して資料を作成する際、資料作成だけに専念できますので大変便利です。

2) JSON形式、YAML形式のファイルも処理できます。

CSV形式やTAB区切りのテキストファイルだけでなく、JSON形式、YAML形式のファイルも処理できます。

fsql のインストール

sudo cpanm App::fsql でインストールできます。

fsql の使い方

データソースとなるテキストファイルを用意します。ここでは CSV 形式のテキスト・ファイルを使います。ファイル名は a.csv とします。

c1,c2
1,2
3,4
5,6

1行目は列見出しとなります。この場合カラム名が c1 と c2 となります。カラム c1 が値1を持つ行を出力してみます。データソースを示すファイル名にコロンと共にテーブル名 t1 を記述します。

fsql -add-csv a.csv:t1 "select * from t1 where c1='1'"
c1,c2
1,2

次に、カラム c1 の合計値を計算します。次のとおりです。

fsql -add-csv a.csv:t1 "select sum(c1) from t1"
SUM
9

ジョインも使えます。

% fsql -a t.json -a 2.csv:t2 'SELECT * FROM t1 LEFT JOIN t2 ON t1.uid=t2.id'

コマンドラインで、パイプ接続によりフィルタリングを行うような場面で、正規表現だけでなくSQLで条件付けできるのは、より直感的で便利ですね。

fsql は Perl製のオープンソース・ソフトウェア(GPL/Artistic License)です。

fsql - Perform SQL queries against files in CSV/TSV/LTSV/JSON/YAML formats perlancar/perl-App-fsql