SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【MySQL】CSVでエクスポート(テーブル単位 or クエリの結果を丸ごと)

CSVでテーブルのデータをエクスポートする。

今回はmysqlコマンドで、SELECT … INTO OUTFILE … 文を使ってみる。

SELECT … INTO OUTFILE … を実際に実行してみた様子

mysql> SELECT * INTO OUTFILE'/tmp/order_info.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '' LINES STARTING BY '' TERMINATED BY '\r\n' FROM order_info;
Query OK, 271245 rows affected (6.07 sec)

これで、/tmp/order_info.csvにデータが書き出される。

とりあえずポイント

CSVが文字化けしたら

現在の接続での文字の扱い、対象のテーブルの文字コードがどうなっているか確認する。

mysql> show variables like 'char%';
+----------------+--------
| Variable_name  | Value  
+----------------+--------
| character_set  | ujis   
...
...
mysql> show table status;
+------------+--------+---------+------------+--------+-...--+-------------+----------------
| Name       | Engine | Version | Row_format | Rows   | ...  | Check_time  | Collation      
+------------+--------+---------+------------+--------+-...--+-------------+----------------
| A          | InnoDB |       9 | Fixed      |      5 | ...  | NULL        | utf8_general_ci
...
...

ずれがあったら文字化けするので、

SET NAMES utf8;

SET NAMES binary;

などでクライアント側を調整のうえで SELECT … INTO OUTFILE … する。

ちなみに、mysqldumpコマンドでも -T オプションでCSV形式の出力ができる。

関連するメモ

コメント