株式会社ビズウインドの@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 さんからの掲載予定です。
ぜひ明日もご覧ください。