Posted at

MySQLクエリでCSVを作成する方法

More than 3 years have passed since last update.


 とりあえずやり方

SELECT * FROM テーブル名

INTO OUTFILE '/tmp/UserTable.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';


  • INTO OUTFILE

    csvファイルを出力する場所を指定します

  • FIELDS TERMINATED BY

    FIELDS TERMINATED BY は、入力ファイルのフィールドの末尾を識別する区切り記号文字を定義するのに使用します。

二重引用符で囲む (例えば ":")

単一引用符で囲む (例えば ':')

のどちらでも問題ありません。


  • OPTIONALLY ENCLOSED BY

     データを囲む文字を指定。囲まない場合は不要。


クリエからCSVファイルの作成

MySQLのSELECT文でテーブルを検索するとします。

SELECT * FROM UserTable;

検索結果

userId
name
level

1000
tanaka
9

1001
kimura
10

1002
sasaki
1

1003
kise
15

1004
nagawasa
20

1005
kawano
11

上記のような形で抽出結果が表示されるとします。

これをCSVファイルに出力しようとすると以下のようなクエリになります。

SELECT * FROM UserTable

INTO OUTFILE '/tmp/UserTable.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';

もしくは

SELECT * FROM UserTable

INTO OUTFILE '/tmp/UserTable.csv'
FIELDS TERMINATED BY ',';


作成されるCSVファイルの中身

tmpファルダの直下にUserTable.csvが作成されると思います。

UserTable.csvの内容は

1000,tanaka,9

1001,kimura,10
1002,sasaki,1
1003,kise,15
1004,nagawasa,20
1005,kawano,11