select結果をCSV出力
select結果をCSV出力するコマンドを解説する。
コマンド
コマンドは下記のとおりである。なお、これはmysqldumpのコマンドではなくselect文なので、mysqlにログインした状態で実行する。select文ではあるが、mysqldumpでのCSV出力と同じようにCSVファイルを出力できる。
SELECT * FROM (テーブル名) where (条件文) INTO OUTFILE "(ファイル名フルパス、円マークはエスケープ)" FIELDS TERMINATED BY ',';
具体例
少し具体的に書こう。DB情報等が下記であったとする。
項目 | 値 |
---|---|
DBユーザ名 | pudding |
DBパスワード | qwerty123456 |
DB名 | zipcode |
Table名 | t_price |
(ダンプファイル名) | t_price-with-where.sql |
このDB情報等を反映すると、下記のように書くことになる。
SELECT * FROM t_price where 3 <= id and id <= 7 INTO OUTFILE 'c:\\temp\\t_price-with-where.sql' FIELDS TERMINATED BY ',';
出力されるsqlファイル
出力結果は以下の通り。
3,定型外,50,120 4,定型外,100,140 5,定型外,150,205 6,定型外,250,250 7,定型外,500,400
用途
出力データをExcel等の外部ツールで扱いたい時に便利である。
補足
この手法はあくまでもselect文であるので、テーブルの出力だけではなく、viewのselect結果でも使用できる。
CSVファイルで出力
レンタルサーバ使用時の注意
多くのレンタルサーバの場合、この手法は使えない。
多くのレンタルサーバでは、アプリケーションサーバとDBサーバは物理的に分離されているため、DBアクセスする際は必ずリモートサーバにアクセスする形になる。そして、この手法の場合、ファイル出力先は必ずDBサーバ内になってしまう。
レンタルサーバでは、DBサーバからファイル自体にアクセスして取得することはできない。なので、この手法は使えない。mysqldumpコマンドを通してCSV出力を行う必要がある。