我正在尝试在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新手。
提前谢谢你:)
答案 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中):
在my.ini中,设置secure_file_priv=""
在如下所示的路径中使用双反斜杠:
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;