構成ファイルを編集する必要がない(そしてWindowsだけでなく他のオペレーティングシステムでも機能する)簡単な答えは、使用するために保存できるディレクトリを見つけることです。
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.06 sec)
次に、 SELECT
でそのディレクトリを使用していることを確認します ステートメントのINTOOUTFILE
条項:
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
元の回答
MySQL 5.6.25から5.6.26にアップグレードしてから、同じ問題が発生しました。
私の場合(Windowsの場合)、MySQL56 Windowsサービスを見ると、サービスの開始時に使用されているオプション/設定ファイルが C:\ ProgramData \ MySQL \ MySQL Server 5.6 \my.iniであることがわかります。コード>
Linuxでは、最も一般的な2つの場所は /etc/my.cnf
です。 または/etc/mysql/my.cnf
。
このファイルを開くと、 secure-file-priv
[mysqld]
の下にオプションが追加されました この新しいバージョンのMySQLサーバーのグループ(デフォルト値:
secure-file-priv ="C:/ ProgramData / MySQL / MySQL Server 5.6 / Uploads"
これにコメントするか(非本番環境にいる場合)、設定を変更してみてください(最近、 secure-file-priv =""
を設定する必要がありました) デフォルトを無効にするため)。変更を加えた後は、サービスを再起動することを忘れないでください。
または、出力を許可されたフォルダーに保存してみることもできます(場所はインストールによって異なる場合があります):
SELECT *
FROM xxxx
WHERE XXX
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.6/Uploads/report.csv'
FIELDS TERMINATED BY '#'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FIELDS TERMINATED BY'、'
を使用して、コンマで区切った値を使用するのが一般的です。 。例については、以下を参照してください(Linuxパスも示しています):
SELECT *
FROM table
INTO OUTFILE '/var/lib/mysql-files/report.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';