MySQL查询结果导出Excel文件
查询
Case 搜索函数
通过 sql 查询出来的结果不一定需要满足我们的需要,可能还需要在导出 Excel 后再次修改,这里希望减少这样的工作,尽可能实现导出来的数据不需要二次修改。
首先是希望对查询出来的结果起别名,这里需要用到Case搜索函数
。
首先是使用范围,Case 搜索函数用在 SELECT
和 FROM
之间
使用的格式
CASE WHEN 字段名 1 = “字段值” THEN “别名 1”
WHEN 字段名 = “字段值” THEN “别名 2”
ELSE ‘别名 3’ END
下面是一段实际的 sql,其中 moneyType
和 changeType
皆为 int 类型
1 | SELECT |
结果如下
和没有使用Case搜索函数
的进行对比
ROUND 函数
按照指定的小数位数进行四舍五入运算,上面的
1 | ROUND( a.money / 100, 2 ) "金额" |
就是对金额除以 100 后保留两位小数
导出
如果是在 Windows 下,可以直接通过 Navicat 导出,如果是在 Linux 下,不能连接外网时,则需要通过命令来实现了
用到的命令
-D 指定的数据库
-e 指定的 sql 语句
1 | mysql -uroot -p123456 -D core -e "select * from user" > user.xlsx |
Linux 下字符编码默认为 UTF-8,如出现乱码可设置为 GBK,命令为
1 | iconv -f utf8 -t gb2312 user.xlsx -o result.xlsx |
解释:将 utf8
编码格式的 user.xlsx
文件转换为 gb2312
编码格式的文件,并输出为 result.xlsx
扩展
iconv 命令是 Linux 系统自带的用于转换文件编码的命令行工具。
语法格式:iconv [参数]
常用参数:
参数 | 解释 |
---|---|
-f | 输入编码 |
-t | 输出编码 |
-o | 指定输出文件 |
-c | 忽略不可转换的字符 |
-l | 列出支持的编码 |
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论