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
これを貼り付けるといい感じに並んでくれる
あとは体裁を整えて完成