mysql导出含有字段列csv文件

来源:互联网 发布:python tkinter 滚动条 编辑:程序博客网 时间:2024/05/22 15:00

mysql导出文本文件想必大家觉得很简单,使用select导出呀!当时我也认为很简单,但在业务提的一些需求中总会碰到一些小坑,下面我就总结下自己在导出的时候碰到的几个小问题:

  1. 数据库装在linux下,编码是UTF8,导出的csv文件提供给业务在WINDOWS都是一堆乱码
  2. csv文件打开后没有字段列,对业务分析数据较困难

解决思路1:

为了把上面两个问题解决,我首先想到了本人经常使用的数据库连接工具RazorSQL,导出方法

  1. 选择一张需导出的表右击后点击Export Data
    这里写图片描述

  2. 点击Export Data之后可以选择导出方式中的xls文件
    这里写图片描述

3.然后一直下一步完成即可

注: 在一些小表中导出没有问题,可能就是时间稍微长一点,但是表记录超过65536行导出报错,为了解决
这个问题我就想着使用命令行导出,于是百度上查呀(花了很长时间去看别人写的博客),虽然可以解决
导出时间上的提升,但是编码问题还是没有解决,博客看了不少还是没有找到乱码及含字段列的问题,
这下百度死心了,搜索mysql去看官网资料select的语法找到了导出可以指定编码,没看到可以导出列
字段(可能英语水平不好没看出)

切记: 碰到问题第一时间看官网资料,然后在百度(我是比较排斥英语文档所以总是浪费了一段时间才去看官
网资料

根据官网资料有了思路二:
官网文档
https://dev.mysql.com/doc/refman/5.7/en/select.html

  1. 在mysql官网中没看到列信息,于是想到拼列字段信息和表的查询结果union all 导出
  2. 由于windows的编码一般是GBK,于是指定GBK编码导出,语法如下:
    这里写图片描述

select * from
(
select
“id”
,”origin_id”
,”userid”
,”username”
,”sex”
,”address”
,”authenticate_type”
,”introduction”
,”level”
,”attentionNum”
,”fansNum”
,”weiboNum”
,”weibo_id”
,”pubdate”
,”pubtime”
,”topic”
,”emotion_tag”
,”@who”
,”isOriginal”
,”ForwardWho”
,”commentNum”
,”ForwardNum”
,”likeNum”
,”url”
,”content”
,”come_from”
from dual
union all
select * from
dispute_event_2_20170502
) b
into outfile ‘/yan/a.csv’
CHARACTER SET GBK
fields terminated by ‘,’ optionally enclosed by ‘”’
lines terminated by ‘\r\n’ ;
这里写图片描述

3.ftp传到WINDOW下查看符合要求

注: 拼字段使用了虚拟表dual;into outfile后面指定编码;select “xx” from dual拼自己表的真实字段名

本人编写了一个比较灵活的导出CSV文件脚本,见指定SQL文本导出CSV标题的博客

原创粉丝点击