mosowave

sinamon129による(主に)技術ブログ。Ruby,Ruby on Rails,Elasticsearchやその他について書きます。

mysqlなどで集計をやってるときによくやる作業の無駄を省く

運用をするエンジニアあるあるかなと思うのですが、

集計用SQLで、
(DBが超ハイスペックだったらいいが、そうでもない場合)
テーブルをjoinするとかなり重い時とか条件が複雑で時間がかかったりする時に、
条件が複雑すぎて一旦途中までidを出してその中からさらに絞るーみたいなことがあって、

いつもだいたいsequel proというGUIツールで叩くのですが、
まあid群をだして、結果がこういう風に出るわけですが、

1111
2222
3333
4444

これを

select * from items where id in (1111,2222,3333,4444)

みたいにするために、

1111,2222,3333,4444

に変換するみたいなことがよくあったりします。(わたしだけ?)

いつもは、

改行されてるid群をコピー

vimにはりつける

%s/$/,/g

全選択してJ

閉じてcatしてコピー

みたいなことをやってたんですが、
今日いきなり、これって、めっちゃ無駄じゃないか?とおもって考えたら
shellでできた

改行されてるid群をコピー

pbpaste | sed -e "s/$/,/g" | tr -d '\n' | sed -e "s/,$//g"| pbcopy

するとなんとクリップボードの保存されてて、あとペーストすれば使えた...


pbpasteはクリップボードからデータを取得
sedで文字列置換
trで改行削除
最後の,を削除
pbcopyでクリップボードにデータを貼り付ける