使用set目录时MySQL导出INTO OUTFILE --secure-file-priv错误

时间:2015-11-13 10:54:05

标签: mysql select-into-outfile

我正在尝试在MySQL数据库上运行以下内容

SELECT * FROM mysql.db
INTO OUTFILE "C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\db.csv"
FIELDS TERMINATED BY '|'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

我收到错误

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

当我运行以下

mysql> SELECT @@secure_file_priv;

我得到了

+------------------------------------------------+
| @@secure_file_priv                             |
+------------------------------------------------+
| C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\ |
+------------------------------------------------+

那么,即使我使用set -secure-file-priv位置,为什么不导出文件?

我习惯于MSSQL和MySQL新手。

提前谢谢你:)

4 个答案:

答案 0 :(得分:14)

使用以下提到的路径位置非常重要:

mysql> SELECT @@secure_file_priv;

如果您将使用自定义路径位置,您仍会收到此错误。正如Lateralus所提到的,不要忘记改变前进斜线的路径。

答案 1 :(得分:9)

哎呀。这是一个怪胎'错字,我的应该是

所以现在我的查询是:

SELECT * FROM   mysql.db INTO OUTFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/db_pipe.csv" FIELDS TERMINATED BY '|' ENCLOSED BY '"'  LINES TERMINATED BY '\n';

答案 2 :(得分:1)

就我而言(在Windows中):

  1. 在my.ini中,设置secure_file_priv=""

  2. 在如下所示的路径中使用双反斜杠:

SELECT description, comment FROM usecase
INTO OUTFILE 'C:\\tmp\\usecase0.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';

答案 3 :(得分:0)

这对我有用。它需要双反斜杠,如果您尝试使用介于两者之间的任何工具来连接mysql,只需添加转义字符。

SELECT * 
      INTO OUTFILE 'C:\\\\ProgramData\\\\MySQL\\\\MySQL Server 8.0\\\\Uploads\\\\employees.txt'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
        LINES TERMINATED BY '\n'
      FROM employees;