3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-08

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

3
1
0

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?