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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/33691094/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 21:24:10  来源:igfitidea点击:

MySQL exporting INTO OUTFILE --secure-file-priv error when using set directory

mysqlselect-into-outfile

提问by Lateralus

I'm trying to run the following on a MySQL database:

我正在尝试在 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';

I get the error:

我收到错误:

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

When I run the following:

当我运行以下命令时:

mysql> SELECT @@secure_file_priv;

I get:

我得到:

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

So why is it not exporting the file even though I am using the set --secure-file-priv location?

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

I am used to MSSQL and new to MySQL.

我习惯了 MSSQL 和 MySQL 新手。

回答by Sayali Sonawane

It is important to use path location mentioned in:

使用中提到的路径位置很重要:

mysql> SELECT @@secure_file_priv;

If you will use customized path location, you will still get this error. As mentioned by Lateralus, don't forget to change path to forward slashes.

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

回答by Lateralus

Argh. It was a freakin' typo, my \'s should have been /'s

啊。这是一个奇怪的错字,我的 \'s 应该是 /'s

So my query is now this:

所以我的查询现在是这样的:

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';

回答by PRITISH

This worked for me. It needs double backslash and if you are trying any tools in between to connect to mysql simply add escape chars.

这对我有用。它需要双反斜杠,如果您正在尝试连接到 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;

回答by mdivk

In my case (Windows):

就我而言(Windows):

  1. In my.ini, set secure_file_priv=""

  2. Use double back slash in the path like below:

  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';
SELECT description, comment FROM usecase
INTO OUTFILE 'C:\tmp\usecase0.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';