#navi(../)
* mysqlによる出力をcsvにする方法 [#g8df3d4e]
mysqlコマンドでcsv出力する方法を以下に記します。
#contents
#htmlinsert(db_ads_top.html)
* 関連資料 [#ia1fdbee]
-[[コマンドラインからSQLを実行する方法>MySQL/コマンドラインからSQLを実行する方法]]
* csv出力 [#w1d1f4f1]
into outfile, ields terminated byを使用することによりCSV出力されます。
$ mysql -u root -p -s db1
Enter password:
mysql> select * from t1;
a b c
1 2 3
4 5 6
mysql> select * from t1 into outfile "/tmp/out.csv" fields terminated by ',';
mysql> \q
$ cat /tmp/out.csv
1,2,3
4,5,6
* ダブルクオートなどで囲みたい場合 [#s4a6a2ac]
enclosed byを使用することにより値を囲む文字を指定することができます。
mysql> select * from t1;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
+------+------+------+
2 rows in set (0.00 sec)
mysql> select * from t1 into outfile "/tmp/out.csv" fields terminated by ',' enclosed by '"';
Query OK, 2 rows affected (0.00 sec)
$ cat /tmp/out.csv
"1","2","3"
"4","5","6"
* 改行コードを指定したい場合 [#y62643d3]
lines terminated byを使用することにより改行コードを指定することができます。
mysql> select * from t1;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
+------+------+------+
2 rows in set (0.00 sec)
mysql> select * from t1 into outfile "/tmp/out_crlf.csv" fields terminated by ',' lines terminated by '\r\n';
Query OK, 2 rows affected (0.00 sec)
mysql> select * from t1 into outfile "/tmp/out_lf.csv" fields terminated by ',' lines terminated by '\n';
Query OK, 2 rows affected (0.00 sec)
改行コードが0D0Aと0Aになっているのが確認できます。
$ hexdump -C out_crlf.csv
00000000 31 2c 32 2c 33 0d 0a 34 2c 35 2c 36 0d 0a |1,2,3..4,5,6..|
0000000e
$ hexdump -C out_lf.csv
00000000 31 2c 32 2c 33 0a 34 2c 35 2c 36 0a |1,2,3.4,5,6.|
0000000c
- hexdumpコマンドについては、以下のリンク記事を参照してください。
-[[逆引きUNIXコマンド/HEX形式でファイルを見たい・hexdumpコマンド>http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/HEX%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%A6%8B%E3%81%9F%E3%81%84%E3%83%BBhexdump%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89.html]]
#htmlinsert(db_ads_btm.html)