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出力を行う必要がある。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください