今回は、テーブルからcsvを作成する方法をいくつか整理しておきたいと思います。
あと、その周辺知識でハマったところも、、
■Linuxコマンドを利用した方法
①sqlファイルとtxtファイルを作成する
mysqldump -u ユーザー名 -p --tab=/tmp --fields-terminated-by="," --fields-optionally-enclosed-by="\"" --lines-terminated-by="\r\n" データベース名 テーブル名
②txtファイルをcsvファイルへ変換する
mv m_class.txt m_class.csv
③csvファイルを開くと、null部分だったセルが「¥N」となっているので、これを一括削除する
■MySQLコマンドを利用した方法
①データベースへ入る
mysql -u ユーザー名 -D データベース名 -p
②csvファイルを作成する
select * from テーブル名
into outfile "/tmp/出力ファイル名(テーブル名.csv)"
fields terminated by ','
optionally enclosed by '"';
③csvファイルを開くと、null部分だったセルが「¥N」となっているので、これを一括削除する
下記は、各コマンドの説明です。
INTO OUTFILE: 出力先パス
FIELDS TERMINATED BY:フィールドの区切り文字
OPTIONALLY ENCLOSED BY:フィールドを囲う文字
LINES TERMINATED BY:行の区切り文字(行が変わる際の文字)
ESCAPED BY:エスケープ文字
MySQLのコンソールからCSVにエクスポートする権限がないという下記エラーが出た場合は、rootでFILE権限を付与する下記コマンドを実行してください。
ERROR 1045 (28000): Access denied for user '*****'@'*****' (using password: NO)
$ mysql -u root -p
mysql> grant file on *.* to '*****'@'*****';
mysql> flush privileges;
「
flush privileges;」は権限を反映するコマンドです。
権限の反映を確認するには、現在の権限を確認する下記MySQLコマンドを実行します。
show grants;
または、
show grants for current_user();
以上です。
【参考サイト】
『MySQLのSELECT文でcsvを出力する』
『MySQLでインポート/エクスポートするための権限付与 』
『ユーザ権限の確認・追加』
『権限の種類と設定されている権限の確認』