これは何?
- CSVファイルをSQLの構文で扱えるツール
ソースはこちら
なにが良いのか
- DB作らなくて良いので環境構築が楽
- 軽快動作
- パイプで他のコマンドに繋げられる
事前知識・必要スキル
- SQLの文法と使いかたを知っている
- コンソール上からコマンドを使って標準出力ができる
- CSVのフォーマットを知っている
ここまでで問題なければ、あっさり使えるはずです。
インストール
brew install textql
使い方
試しにまずこんなCSVだったとします
sample1.csv
id,name,age
1,"aaa",12
2,"bbb",13
3,"ccc",14
4,"cdc",15
5,"cee",16
6,"ffc",17
こんなコマンドを実行します
textql -header -sql "select * from sample1 where age=14" sample1.csv
出力
3,ccc,14
あっさり。
集計処理だって・・・
textql -header -sql "select sum(age) from sample1" sample1.csv
出力
87
LIKEも勿論
textql -header -sql "select * from sample1 where name like '%d%'" sample1.csv
出力
4,cdc,15
INNER JOINなんかも
sample2.csv
id,food
1,"🍛"
2,"tempra"
コマンド
textql -header -sql "select * from sample1 as s1 inner join sample2 as s2 on s1.id=s2.id" sample1.csv sample2.csv
出力
1,aaa,12,1,🍛
2,bbb,13,2,tempra
SQLに慣れている人はあっさり使えて軽快動作!
コマンドライン上で動くので、標準入出力を使ってパイプでつなげることもできます。
一番の魅力はここかもしれない。
冗長なので書いていませんが、GROUP BYやCOUNTも使えたので、
例えば、ちょっとした集計処理の必要に駆られた時などが出番です。
もちろん、パフォーマンスを気にするくらいのデータ量がある本気の集計にはDB使えよという話です。
追記:
- パフォーマンスは調べていません。パフォーマンスを気にするようならDBを使うようにしましょう
- jsonv.shなるものがあり、JSONをCSVにしてくれるそうな。パイプでつなげるだけで夢が広がりますね
参照サイト
- dinedal/textql: Execute SQL against structured text like CSV or TSV : https://github.com/dinedal/textql
- archan937/jsonv.sh: A Bash command line tool for converting JSON to CSV : https://github.com/archan937/jsonv.sh