【MySQL】データベースからCSVファイルを出力する

シェアする

今回はMySQLデータベースからCSVを出力する方法を紹介します。
MySQLからCSVファイルを出力するにはSELECT INTO 構文でOUTFILEを使う必要があります。

スポンサーリンク

データベースの準備

1.以下のSQLを実行し、データベースを作成する。

CREATE DATABASE comma;

2.以下のSQLを実行し、先程作成したデータベースに接続する。

USE comma

3.以下のSQLを実行し、テーブルを作成する。

CREATE TABLE goods(
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(50) NOT NULL,
    price int(11) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4.テーブルが問題なく作成されているか確認する。

mysql> show create table goods\G;
*************************** 1. row ***************************
       Table: goods
Create Table: CREATE TABLE `goods` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `price` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

5.以下のSQLを実行し、作成したテーブルにデータを挿入する。

INSERT INTO `goods` (`id`, `name`, `price`) VALUES (1, 'キャベツ', '700');
INSERT INTO `goods` (`id`, `name`, `price`) VALUES (2, '大根', '580');
INSERT INTO `goods` (`id`, `name`, `price`) VALUES (3, 'きゅうり', '100');
INSERT INTO `goods` (`id`, `name`, `price`) VALUES (4, 'レタス', '498');
INSERT INTO `goods` (`id`, `name`, `price`) VALUES (5, '小松菜', '250');

CSVファイルを出力する

CSVファイルを出力するにはSELECT INTO 構文でOUTFILEを使う必要があります。
SELECT INTO 構文を使うと、ファイルに書き込むことができるようになります。今回は更に、OUTFILEを使って選択された行をファイルに書き込んだ上で、特定の出力形式でファイルを出力できるようにしています。

以下に使用例を記載します。

SELECT フィールド名 FROM テーブル名 INTO OUTFILE’出力したいファイル名’ FIELDS TERMINATED BY '区切り文字' OPTIONALLY ENCLOSED BY '囲み文字';

FIELDS TERMINATED BYは、上記の「区切り文字」の部分で指定した文字でファイル内のフィールドが区切られるようになります。CSVを出力するのであれば、「,」(コンマ)を指定します。

OPTIONALLY ENCLOSED BYは、上記の「囲み文字」の部分で指定した文字でファイル内のフィールドの文字列が囲まれるようになります。フィールドの文字列中にFIELDS TERMINATED BYで指定した文字(CSVであれば「,」)が存在した時のために、「”」(ダブルクォート)を指定しておきます。

実行例:

SELECT * FROM goods
INTO OUTFILE '/Users/kaji/Desktop/goodstable.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';

MySQLに接続し実行した結果、以下のようなファイルが出力されます。
【goodstable.csv】

1,"キャベツ",700
2,"大根",580
3,"きゅうり",100
4,"レタス",498
5,"小松菜",250

参考サイト

MySQLでのファイル出力方法について。バージョン5.7.11でmysqlクライアントを使用して確認しています。SELECT INTO OUTFILE を使用するサーバ上のファイルに出力します。…

昨年大学を卒業したばかりのエンジニアです。CakePHPを勉強中です。拙い部分も多いですがよろしくお願いします。

スポンサーリンク

シェアする

フォローする