<< トップページへ

<< 目次へ

更新日:2013.4.29

データをエクスポートする



 MySQLで操作されたテーブル、例えば特定の条件にマッチするレコードだけを抽出、あるいは新たなカラムが追加されたり、複数のテーブルを結合(紐付け)したテーブルなどは、しばしばCSVファイルなどに保存する必要がでてくる。大規模なデータをMySQLで操作して、必要なテーブル(加工されたテーブル)をエクスポートしてExcelやRで取り扱うことはよく行われることである。


■OUTFILE構文を使ってエクスポート

 例として先ほどフラグ立てしたテーブルをエクスポートしてみよう。

 
#### データテーブルをCSVで出力する
#   あらかじめ「tbl」というデータテーブルが作成されているとする

select * into outfile 'c:/usr/mysql/tbl.csv'        # c:/usr/mysqlにres.csvを出力
fields terminated by ','                            # 区切り文字を指定
lines terminated by '\r\n'                          # 改行コードを指定
from tbl;                                           # 出力するテーブル名



#### ヘッダ名を付けて出力する場合
select 'ID','名前','部署' 
 union
select * into outfile 'c:/usr/mysql/tbl_header.csv' # c:/usr/mysqlにres.csvを出力
 fields terminated by ','                           # 区切り文字を指定
 lines terminated by '\r\n'                         # 改行コードを指定
from tbl;                                           # 出力するテーブル名
 

 なおファイルの入出力の際には改行コード(もっと大きくいえば文字コード)に注意する必要がある。上記の「\r\n」はWindowsの改行コードであるが、UNIXでは「\n」、Macでは「\r」である。

▼テキストの改行コード
http://www.rsch.tuis.ac.jp/~mizutani/online/with-pc/textline.html

 自分の使用しているMySQLサーバ(正確にいえば、Server、Db、Client、Conn.それぞれ)に文字コードがセットされているので、それを確認しておく必要がある。以下の場合、全てShift-JISがセットされているので、書き出しの際に何も指定しなければShift-JISでCSVファイルが出力される。

 
#### statusとコマンドすることで、セットされている文字コードを確認できる
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.51, for Win32 (ia32)

Connection id:          1
Current database:       rensyu
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.1.51-community MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    sjis
Db     characterset:    sjis
Client characterset:    sjis
Conn.  characterset:    sjis
TCP port:               3306
Uptime:                 1 hour 12 min 51 sec