mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

MySQL - SELECT結果をCSV出力!

[ pc_tips ] [ MySQL ]

こんばんは。

今日は、MySQLでSELECT文を発行した際の結果をCSVファイルに出力する方法についてです。

と言っても、SQL文を作成する際に、少しばかし記述を追加するだけです。

記述例

Windows上でテーブル"hoge"の全レコード・全カラムのデータを"D:\Work\hoge.csv"に出力する例です。 コマンドラインからMySQLにログインするか、GUIツール「phpMyAdmin」にrootでログインして実行してください。

1
2
3
4
SELECT *
  INTO OUTFILE "D:\\Work\\hoge.csv" FIELDS TERMINATED BY ','
       OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
  FROM hoge
1
"D:\\Work\\hoge.csv"

はWindowsでの記述例です。"\“はエスケープ処理が必要です。サーバがLinuxサーバならファイルの作成先もLinuxサーバ側にします。

1
TERMINATED BY ','

は区切り文字の設定です。

1
ENCLOSED BY '"'

は文字列カラムをダブルクォーテーションでくくる設定です。

1
LINES TERMINATED BY '\n'

はレコード単位で意図的に改行していますが、デフォルトで改行されるので無くても大丈夫だと思います。 ダブルクォーテーションでくくる必要も無く、意図的に改行もしないのであれば、

1
2
3
SELECT *
  INTO OUTFILE "D:\\Work\\hoge.csv" FIELDS TERMINATED BY ','
  FROM hoge

で大丈夫です。

注意

  • 上記の方法でCSVファイルを出力する際、出力するファイルが既に存在する場合はエラーとなります。既に存在する場合は、ファイル名を変えるか、存在するファイルを削除しておきます。
  • ファイル出力するには FILE権限のあるユーザで実行する必要があります。
  • リモート接続でローカルにファイルを作成することはできません。

参考サイト


以上。

Comments