解决mysql查询结果导出到文本的报错问题

Posted 发发说分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决mysql查询结果导出到文本的报错问题相关的知识,希望对你有一定的参考价值。

因考核需要,每个月需要出几张KPI的相关的报表,都是直接执行几条SQL做统计数据然后插入到新表中,思来想去,还是做成脚本,定期自动执行。


需要导出excel的SQL和脚本如下

select month as 月份, sysname as 系统,domain as 域名, sum_pv as 调用总数, reptime as '平均响应时间(毫秒)', sucess as '访问成功率(%)' from month where month ='202106' group bysysname into outfile '/tmp/1.xls'

 

在调试过程中,首先报了用户权限问题:

解决mysql查询结果导出到文本的报错问题

于是更新了用户的权限:

update mysql.user setFile_priv='Y' where user='kpireport';flush privileges;

但是再次执行的时候,还是报错了,提示 The MySQL server is running with the --secure-file-priv option soit cannot execute this statement

解决mysql查询结果导出到文本的报错问题

经文档查询,主要是因为部分版本的mysql对通过文件导入导出作了限制,默认不允许。

可以使用如下命令查看配置

show variables like '%secure_file_priv%';


value参数说明:

如果value值为null,则为禁止,

如果有文件夹目录,则只允许改目录下文件(测试子目录也不行),

如果为空,则不限制目录;

具体说明可参考 https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv

解决方法:

修改mysql配置文件my.cnf,在[mysqld] 下添加条目:secure_file_priv =表示不限制目录(等号一定要有,否则mysql无法启动)secure_file_priv = /home表示限制为csv文件导入导出到/home目录secure_file_priv=null不允许csv文件的导入导出secure_file_priv=/csv文件可导入到任意路径

修改完配置文件后重启mysql生效,再执行脚本即可导出报表。


以上是关于解决mysql查询结果导出到文本的报错问题的主要内容,如果未能解决你的问题,请参考以下文章

解决maven的报错

MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

将查询从 MySQL 导出到 Redshift

关于mysql的报错的1366

使用Sqoop把ADS层数据导出到MySQL

Mysql查询数字类型结果为Object,强转int报错