Zsh
SQLite3
CSV

打倒、方眼紙アプリ! ヒアドキュメント + sqlite でcsvの加工が捗るtips

株式会社ビズウインド@nassy20 です。

ご縁あって、株式会社オズビジョン 様に、アドベントカレンダーに招待頂きました。
がんばるぞい٩(՞ਊ՞)۶

この記事は、何の話?

皆さん、手動でcsvの加工する場面はよくあると思います。
本番データ解析のためにcsvからデータを抜き出したり、テストデータ作成だったり。
そんな時のcsv加工がちょっと楽になるかもしれないtipsのお話です。

何をどうやるの?

加工したいcsvをsqliteに放り込んで、
加工コマンドを叩いて、csvをアウトプットするだけなの処理ですが、
ヒアドキュメントも組み合わせると半自動化できるアイデアです。

具体例

下記、コマンド群は普段利用しているものです。

nkf、sqlite3をinstallした上でzshで実行しています。
また、カレントディレクトリにcsvが置いてある必要があります。

Backlog(プロジェクト管理ツール)から出力したcsvを変数に指定して実行するだけで、
指定カラムのみが記載されたcsvが出力されます。

csv=Backlog-Issues-20171102-1943.csv

nkf -w --overwrite ${csv}
sqlite3 << EOS
.separator ,
.import ${csv} item
.headers on
.mode csv
.output 作業実績.csv
-- ↓csvに出力したい内容をselect 
SELECT キー,件名,状態,予定時間,実績時間 FROM item;
-- ↑csvに出力したい内容をselect 
.exit
EOS

推しポイント

  • 定形作業でなくても、部分的に修正してterminalに流し込むだけで利用できるところ

sqliteを使う理由

  • 加工データが大量でも一瞬で処理してくれるから
  • update文を流してデータ修正が出来るから
  • データのつけあわせなどをしたい時にjoin句が使えるから
  • エクセルなどよりも早く柔軟に加工出来るから

ヒアドキュメントを使う理由

  • sqliteへの入力内容が動的に変更出来るから

ヒアドキュメントやsqliteについての参考URL

ヒアドキュメントやsqliteの概要を把握するのに役立った記事です。

明日は気高きvimmerの @oz-urabe さんからの掲載予定です。
ぜひ明日もご覧ください。