select結果をcsvでファイル出力
自分では結構前から便利に使ってるんだけど、意外に重宝されることが最近ありました
それがこれ
select * from hoge into outfile '/tmp/hoge.csv' fields terminated by ',' optionally enclosed by '"'
私の使いみちとしては、
- 障害対応なんかで、多分このレコードがおかしいんだけど、100%自信がないときに試したい
- 二日酔いのときに、絶対間違えられないクエリを流すとき
- ローカルじゃない別の環境で起きてる不具合のデータをサクッととってきたいとき
- 単にダンプが面倒なとき
- シャーディングしてるDBで、他のDBへの参照権限がない場合、grantするの大げさやなって思ったときにファイルに出してシェルとかawkでコネコネするとき
/tmp
か /var/tmp
配下にcsvファイルを落として、ファイル自体の消し忘れを防止することを意識的にしてたりする
ま、mysqlの実行ユーザーにパーミッションがないところには落とせないんですけど
時と場合によっては fields terminated by
の指定を変えて、タブ区切りとかスペース区切りにしてシェルとかawk、perlで使いやすい形にしたりする
前のプロジェクトの方針?として、「直せるんだったらなにしてもいい」っていうなんともファンキーな空気で、まぁ立ち上げ近くからいたからかもしれませんが、、クエリ打つときは begin
commit
rollback
してって先輩に口酸っぱく言われてました
ただ、家でたら鍵かけたかな?って思うぐらい、一時記憶装置の容量が少ない私は不安になってしまってこういう若干過度なテクニックがわりと発達したのかも
まぁ、もう大体忘れちゃいましたけど・・・
最近はMySQLばっかのプロジェクトに関わることが多いのですが、OracleとかPostgresqlとかにも同様の機能があるのかなぁ