CSV ファイルを検索するのが面倒くさい。
Excelで開いて、集計関数なんて使ってるのめんどくさくないですか?私は面倒くさいです。
CSVファイルやデータログファイルをGrepするのも飽きてきました。sort して uniq して awk も良いんだけど、SQLで集計できたら楽だよね。
SQLiteでぱぱっと出来る。
CSV をSQLiteで取り込んで、SQLで検索するなんて直ぐ出来る。
sqlite3コマンドがあれば誰もカンタンに扱えて便利。
適当なCSVを用意する
本当に適当なCSVを用意する
1,a,b,ここは 2,b,c,あれは 3,d,e,そこは
SQLiteを開く
sqlite3 tekitou.db
テーブルを作る
sqlite> create table sample ( id , name1 , key , mm );
ココがポイント、テーブルの型定義はとりあえず要らない。だってSQLITEは全てが文字列型のテキストが前提だから。
インポートする
sqlite>.mode csv
sqlite>.import tekitou.csv sample
ここがポイント、 .import 直前で、.mode csv
とすることで、csv モードになる。便利!
*1
SQLで検索する
sqlite > select * from sample ; sqlite > select sum(id) from sample ;
ああ、便利。便利すぎてヤバイ。
注意点
CSVは「空白」や「クォート」文字があれば、ソレすらも取り込むので、取り込みすぎたら、sql側でupdate する必要がある。
もしくは、事前に区切り文字の後ろのクォートや空白を消しておく必要がある。
もし区切り文字を変えたいときは
現在の区切り文字を確認
sqlite > .show echo: off eqp: off explain: off headers: on mode: csv nullvalue: "" output: stdout separator: "," "\r\n" stats: off width:
このSeparator部分を任意に変更できる
sqlite > .separator , sqlite > .separator | sqlite > .separator /
あぁ便利すぎる。find の結果を/ で取り込んだら、ファイル一覧をさくっとDBに作れて楽しかった。
これで快適SQL生活
手軽にSQLが使えるんだからどんどん使っていくべきだと思うんですよね。
JSONのように階層構造にうるさくないし、末尾のカンマ問題もないし。すげー楽。
しかもEXCEL職人芸も要らないし、ターミナルだけでぱぱっと出来る。楽しかった。