MySQL可以使用 into outfile 做文件的直接倒出,但是,数据库默认这个服务是没有开启的,直接运行select * from XXX into outfile ‘xxx.xlsx’;,则会报如下错误:
[HY000][1290] The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
show global variables like ‘%secure_file_priv%’;
secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。
secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
因为 secure_file_priv 参数是只读参数,不能使用set global命令修改
解决方法
打开my.cnf 或 my.ini,加入以下语句后重启mysql。
secure_file_priv=''
service mysql restart
此时再执行:
select a.权益名称,a.销售品NBR from `权益相关销售品(0103)` a into outfile