Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
TL;DR
Specify the secure-file-priv folder with double back slash
and also explicitly specify the output file with double back slashes
and the OPs original issue is solved.
The detail
The longer answer is as follows -
On Windows 11 64-bit operating system, x64-based processor, build 22621.963, Version 22H2 with MySQL installed using the web installer .MSI file as a developer configuration.
SELECT VERSION();
gives '8.0.31'
Help > About Workbench gives Version 8.0.31 build 2235049 CE 64 bits
The defaults file on Windows 11 is called "my.ini" and is in C:\ProgramData\MySQL\MySQL Server 8.0
C:\ProgramData
is a hidden folder.
The default specification in my.ini is secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
execute SHOW VARIABLES LIKE "secure_file_priv";
copy and paste the row gives 'secure_file_priv', 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\'
which renders as 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\'
in Workbench
Note the backslash, forward slash and double back slash syntax of these folder specifications
execute the OP's code
SELECT * FROM shippers INTO OUTFILE 'report.csv'
gives error 1290
execute the OP's code
SELECT * FROM shippers INTO OUTFILE 'report.csv'
FIELDS TERMINATED BY '#' ENCLOSED BY '"' LINES TERMINATED BY '\n';
gives error 1290
next change my.ini to secure-file-priv=""
and restart MySQL using Open Services > Stop Service MySQL80 > then Start Service MySQL80 then close and reopen Workbench.
secure-file-priv
is now switched off
SHOW VARIABLES LIKE "secure_file_priv";
Variable_name, Value
'secure_file_priv', ''
execute the OP's code
SELECT * FROM shippers INTO OUTFILE 'report.csv'
The file report.csv is generated in C:\ProgramData\MySQL\MySQL Server 8.0\Data\northwind
northwind
is the database name
The output file is tab separated, Excel does not recognise this as a .CSV file and renders it as a single column
"1 Speedy Express (503) 555-9831"
"2 United Package (503) 555-3199"
"3 Federal Shipping (503) 555-9931"
"1 Speedy Express (503) 555-9831"
"2 United Package (503) 555-3199"
"3 Federal Shipping (503) 555-9931"
execute the OP's code
SELECT * FROM shippers INTO OUTFILE 'report.csv'
FIELDS TERMINATED BY '#' ENCLOSED BY '"' LINES TERMINATED BY '\n';
file report.csv is generated in C:\ProgramData\MySQL\MySQL Server 8.0\Data\northwind
The output file is as specified in the SQL code with text fields enclosed by quotes and separated by # -
1#"Speedy Express"#"(503) 555-9831"
2#"United Package"#"(503) 555-3199"
3#"Federal Shipping"#"(503) 555-9931"
1#"Speedy Express"#"(503) 555-9831"
2#"United Package"#"(503) 555-3199"
3#"Federal Shipping"#"(503) 555-9931"
Next set secure_file_priv="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\"
in my.ini and restart MySQL and Workbench
execute the OP's code
SELECT * FROM shippers INTO OUTFILE 'report.csv'
Error 1290 because "C:\ProgramData\MySQL\MySQL Server 8.0\Data\northwind"
is not the secure file output folder.
execute the following code
SELECT * FROM shippers INTO OUTFILE "C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\report.csv"
file report.csv is generated in "C:\ProgramData\MySQL\MySQL Server 8.0\Uploads"