MySQL直接导出CSV文件,并解决中文乱码的问题 | 您所在的位置:网站首页 › shell生成文件指定编码格式是什么 › MySQL直接导出CSV文件,并解决中文乱码的问题 |
需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件。 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决。 1. 生成文件不成功,没有读写权限 2.导出数据为中文乱码 3.数据没有格式化,阅读不方便 解决方案: 如果使用 select ... into outfile ...方式导出数据,需要分为两种情况 :1. windows系统下:可以随意指定对应的目录 。2. linux 系统下 :(1)不指定目录 ,默认在当前导出数据库数据目录下 ,例如 /var/lib/mysql/db_name (2) 指定目录时,默认只能指定 /tmp目录 。否则回报 “ ERROR 1 (HY000) at line 1: Can't create/write to file '/xxxx/xxxx/xxx.csv' (Errcode: 13)” 错误 !导致原因是因为权限问题,修改起来比较麻烦 !可以放到/tmp/目录下,然后cp到其它你想存放的目录。【 推荐使用这种方法】
对于中文乱码的问题,有两种解决方案 1.user表是utf8编码,excel默认编码格式是GBK,excel直接打开时候是一堆乱码。后来想了一个办法中转,先保存成为txt格式,excel打开txt时候会提示选择用哪种编码方式打开,选择utf8解决。 2.导出时候加上CHARACTER SET gbk 即可【推荐使用】
关于数据格式化的问题,需要给导出的字段传递一些参数 1 fields terminated by ',' optionally enclosed by '"' escaped by '"' 2 lines terminated by '\r\n'这个参数是根据RFC4180文档设置的,该文档全称Common Format and MIME Type for Comma-Separated Values (CSV) Files,其中详细描述了CSV格式,其要点包括: (1)字段之间以逗号分隔,数据行之间以\r\n分隔; (2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。 terminated by分隔符:意思是以什么字符作为分隔符enclosed by字段括起字符escaped by转义字符 terminated by描述字段的分隔符,默认情况下是tab字符(\t) enclosed by描述的是字段的括起字符。escaped by描述的转义字符。默认的是反斜杠(backslash:\ ) 一个完整的实例如下所示: select id , tel,email from hr_users limit 3 into outfile '/tmp/junjun.csv' character set gbk fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';
|
CopyRight 2018-2019 实验室设备网 版权所有 |