将MySQL查询结果导出到Excel

总结将mysql的查询结果导出到文件的方法

总结

使用命令

select user, host, password from mysql.user into outfile '/tmp/user.xls';

-- 执行上述命令会提示下面的错误
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

-- 解决1,查看下面这个变量指示的路径,把文件导出到该路径下即可
SHOW VARIABLES LIKE "secure_file_priv";

select user, host, password from mysql.user into outfile '/var/lib/mysql-files/user.xls';

参考:https://stackoverflow.com/questions/32737478/how-should-i-tackle-secure-file-priv-in-mysql

设置查询结果自动写入到指定文件

-- 设置
pager cat > /tmp/test.txt 

-- 验证,执行如下查询控制台不显示,查询结果在/tmp/test.txt文件中
select user, host, password from mysql.user;

-- 取消设置
pager

shell执行mysql命令将结果重定向到文件

# 写法一:
mysql -D mysql -e "select host, user, password from user" > /tmp/user.xls;

# 定法二:如果sql过长,可以这样写
mysql -h localhost -uroot -p123456 < t.sql  > /tmp/result.txt  

# t.sql可以这样写
use mysql;  
select host, user, password from user; 

# 写法三:
mysql -h localhost -uroot -p123456 -e "source t.sql" > /tmp/result.txt  

应用举例

需要执行一个复杂的sql,并将结果导出成excel格式,不能外网联结固不能用navicat等工具导出啦,在服务端通过命令行导出并传到本地。

法一:使用into outfile命令,遇到下面情况,放弃

-- 提示下面错误
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
-- 查看下面变量是NULL
SHOW VARIABLES LIKE "secure_file_priv";

法二:使用paper命令,导出的格式不方便转成excel,放弃

法三:使用mysql命令

mysql -h xxx.com -uroot -p'password' -e "
复杂的查询SQL
" > result-utf8.xls

# 还有最重要的一步,在linux中默认是utf-8格式,需要转成gbk格式
iconv -futf8 -tgb2312 -oresult-gbk.xls result-utf8.xls

参考:

转载于:https://my.oschina.net/yysue/blog/2223421

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值