Help us understand the problem. What is going on with this article?

MySQLからcsvを出力する

環境

mysql : Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)

SELECT文でcsvファイルを出力する

SELECT * FROM hoge INTO OUTFILE '/output/hoge.csv'
 FIELDS TERMINATED BY ','
 OPTIONALLY ENCLOSED BY '"'

dockerでMYSQLコンテナ立ち上げている場合、OUTFILEをマウント位置にすると良い

csvファイルを出力する際にエラーを吐いた場合

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

データの入出力エラー

MySQLの設定を確認

mysql> SELECT @@global.secure_file_priv;

+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
| NULL                      |
+---------------------------+

このNULLがダメらしい

設定を変更して解決する

DockerでMySQLコンテナを立ち上げて.sqlファイルからDBを作る
立ち上げているコンテナは上の通りなので、my.cnfに以下を追記

[mysqld]
secure-file-priv = ""

コンテナ再起動で設定を反映させてると設定欄のNULLが消える

mysql> SELECT @@global.secure_file_priv;

+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
|                           |
+---------------------------+

これでSELECT文でcsvファイルが吐き出せるようになっているはず

参考資料

MySQLのバージョン確認方法
MySQLのSELECT文でcsvを出力する
MySQLでCSV出力しようとしたら --secure-file-priv option のエラーになった
MySQLでCSVファイルを使って結果出力やデータ入力を行う方法

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away