LoginSignup
154
143

More than 5 years have passed since last update.

textqlが超便利

Last updated at Posted at 2016-08-03

これは何?

  • CSVファイルをSQLの構文で扱えるツール

ソースはこちら

なにが良いのか

  1. DB作らなくて良いので環境構築が楽
  2. 軽快動作
  3. パイプで他のコマンドに繋げられる

事前知識・必要スキル

  • 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にしてくれるそうな。パイプでつなげるだけで夢が広がりますね

参照サイト

154
143
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
154
143