MySQLの出力結果を非エンジニアに渡すときなどはExcelなどにはると思うのですがそういうときの話。
意外と知らない人は知らないのでメモがてら。
結論
MySQLの出力結果をテキストエディタなどに貼り付けて | を \t (タブ文字)に変換する。
原理解説
Excel(もしくはスプレッドシート)は以下の性質を持っている
- tabで区切られたものを貼り付けるとtabごとに隣接する列のセルにデータが貼り付けられる
- 改行すると次の行に貼り付けられる
この性質があるため、列の区切りをタブに変換するとすんなり貼れる。
例
『users テーブルの最新10件の作成日と更新日をスプレッドシートで欲しい』みたいなとき
mysql> SELECT id,created_at,updated_at FROM users order by ID DESC LIMIT 10; +-----+---------------------+---------------------+ | id | created_at | updated_at | +-----+---------------------+---------------------+ | 233 | 2017-12-18 03:19:23 | 2017-12-18 03:19:23 | | 232 | 2017-12-18 03:18:45 | 2017-12-18 03:19:05 | | 231 | 2017-12-18 02:01:15 | 2017-12-18 02:01:49 | | 230 | 2017-11-29 08:38:25 | 2017-11-29 08:42:56 | | 229 | 2017-10-06 05:52:32 | 2018-04-24 12:37:47 | | 228 | 2017-10-03 03:56:23 | 2017-10-03 03:58:22 | | 227 | 2017-10-03 03:52:20 | 2017-10-03 03:52:20 | | 226 | 2017-10-02 04:02:05 | 2017-10-03 04:04:57 | | 225 | 2017-09-28 09:24:02 | 2017-09-28 09:24:48 | | 224 | 2017-09-25 23:06:23 | 2017-09-25 23:09:28 | +-----+---------------------+---------------------+ 10 rows in set (0.00 sec)
こんなデータがあるとしたときに、| を \t に変換する
233 2017-12-18 03:19:23 2017-12-18 03:19:23
232 2017-12-18 03:18:45 2017-12-18 03:19:05
231 2017-12-18 02:01:15 2017-12-18 02:01:49
230 2017-11-29 08:38:25 2017-11-29 08:42:56
229 2017-10-06 05:52:32 2018-04-24 12:37:47
228 2017-10-03 03:56:23 2017-10-03 03:58:22
227 2017-10-03 03:52:20 2017-10-03 03:52:20
226 2017-10-02 04:02:05 2017-10-03 04:04:57
225 2017-09-28 09:24:02 2017-09-28 09:24:48
224 2017-09-25 23:06:23 2017-09-25 23:09:28
これを貼り付けるといい感じに並んでくれる

あとは体裁を整えて完成
