mysqlの出力結果をCSVにしたいと思ったとき、パラメータがすぐにわからない時があります。
たぶんパラメータをいじればできるんでしょうけど、それほどmysqlに詳しくないし調べるのもめんどくさい。
でもgrepやsedを駆使すればいけるんじゃねーかとやってみました。
tl;dr
mysqlの取得結果をパイプで下記をつなげるだけです。
| grep -v "\-\+\-" | sed "s/^| //g" | sed "s/ |$//g" | sed "s/ | /,/g" | sed "s/ //g"
解説
例えばこんな出力があるとします。
+---------+-------------+
| ID | CREATE_TIME |
+---------+-------------+
| 10508 | 1569301799 |
| 10509 | 1569301801 |
| 10510 | 1569301802 |
| 10511 | 1569301803 |
| 10512 | 1569301804 |
+---------+-------------+
この枠組みが邪魔ですね。grepとsedで削除してみます。
+---------+-------------+ <---No.1
| ID | CREATE_TIME |
+---------+-------------+ <---No.1
| 10508 | 1569301799 |
| 10509 | 1569301801 |
| 10510 | 1569301802 |
| 10511 | 1569301803 |
| 10512 | 1569301804 |
+---------+-------------+ <---No.1
| | |
No.2 No.4 No.3
処理の意味は下記の通りです。
| grep -v "\-\+\-" No.1 : "+"が入った行を省いて
| sed "s/^| //g" No.2 : 先頭の|を省いて
| sed "s/ |$//g" No.3 : 最後の|を省いて
| sed "s/ | /,/g" No.4 : 間の|を,に変えて
| sed "s/ //g" No.5 : スペースを削除
加工結果です。
ID,CREATE_TIME
10508,1569301799
10509,1569301801
10510,1569301802
10511,1569301803
10512,1569301804
注意
sqlの結果にスペースが入ってしまうと、うまくいかなくなります。
あくまで上記は参考に自分でがんばってみてください。