<< 目次へ
更新日: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