MySQLでCSVで出力する方法を調べてみた。
MySQLでCSVファイルに出力、エクスポートする
MySQLであるテーブルをCSVで出力、エクスポートする方法は次の通りです。
1 2 3 4 5 |
mysql> SELECT * FROM tbl_name INTO OUTFILE 'tbl_name.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; |
出力される場所は
var/lib/mysql/(データベース名)/tbl_name.csv
です。
MySQLは、ユーザー mysql、グループ mysql なので、権限がない場所に csv ファイルをエクスポートすることは出来ません。
ヘッダをつけてCSVエクスポート
ヘッダをつけることもできます。
一行目に文字列を出力し、selectの結果とUNIONします。
1 2 3 4 5 6 7 8 9 10 |
mysql> (select 'ID', 'NAME') UNION (select CODE, COUNTRY from country into outfile "tbl_name.csv" fields terminated by ',' /* カラムの区切り文字 */ enclosed by '"' /* カラムの囲み文字 */ escaped by '"' /* エスケープ文字(デフォルトは) */ lines terminated by 'rn' /* 1レコードの改行コード */ ); |
文字コードの指定、文字化け
Windows版で文字化けするというケースがあります。
その場合、文字コードを指定してください。
SELECT ... INTO OUTFILE文にCHARACTER SET 'sjis'という句を追加して、実行してみてください。
1 2 3 4 5 6 |
mysql> SELECT * FROM tbl_name INTO OUTFILE 'tbl_name.csv' CHARACTER SET 'sjis' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; |
コメント
“SJIS”より”CP932″に変換した方がいいです。
“~”などのSJISを拡張した文字も変換できるので。
SJISとMS932とCP932って同じものと思っていました。