MySQLでSELECTした結果をCSVファイルに出力する方法をご紹介します。CSVへのファイル出力には「INTO OUTFILE」構文を使用します。
使用した環境
- Windows 10 Pro 1903 18362.592
- MySQL version 8.0.13
SELECT の結果をCSVファイルに出力する方法
今回検証で使用したテーブル(members)
select * from members; +------+----------+------+------------+ | id | name | age | department | +------+----------+------+------------+ | 0001 | 田中太郎 | 33 | 営業部 | | 0002 | 山田一郎 | 45 | 営業部 | | 0003 | 佐藤圭介 | 24 | 技術部 | | 0004 | 中村花子 | 29 | 経理部 | +------+----------+------+------------+
基本構文
(任意のSELECT文) INTO OUTFILE '出力ファイルパス';
オプション
以下4種類のオプションを指定することができます。
オプション | 概要 |
---|---|
TERMINATED BY | 区切り文字の指定 |
ENCLOSED BY | フィールドを囲む文字の指定 |
ESCAPED BY | エスケープ文字の指定 |
LINES TERMINATED BY | 改行文字の指定 |
例
SELECT id, name, department FROM members INTO OUTFILE 'C:/tmp/output_1.csv' FIELDS TERMINATED BY ',';
出力結果(output_1.csv)
0001,田中太郎,営業部 0002,山田一郎,営業部 0003,佐藤圭介,技術部 0004,中村花子,経理部
トラブルシューティング
上記で紹介したSQL文で、私が遭遇したエラーを記載しておきたいと思います。
ERROR 1290
エラーメッセージ
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
エラーメッセージ 日本語訳
エラー1290(HY000):MySQLサーバーは--secure-file-privオプションを指定して実行されているため、このステートメントを実行できません
概要
MySQLのセキュリティにより、ファイル書き込みできるディレクトリが制限されているため、このエラーが発生します。
書き込み可能なディレクトリは下記クエリで確認できます。
select @@secure_file_priv;
解決方法
「C:\ProgramData\MySQL\MySQL Server 8.0\my.ini」をテキストエディタで開き、下記のように「secure-file-priv」を空に設定します。
INIファイルの編集が完了したらMySQLのサービスを再起動してください。
コメント