Mysql中文乱码以及导出为sql语句和Excel问题解决
这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看。
一、导出数据。
先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47。
我想把本机数据库内的数据迁移到另一台机器上,于是使用Workbench中自带的import/export功能,其实就是调用mysqldump。不幸的是,出现了版本不一致的错误。



错误没治了,最终找到解决方案,可以指定mysql的mysqldump,路径为:/usr/local/mysql/bin/mysqldump,这样是把数据导出为sql语句的insert语句。
由于需要是把数据导出为excel,所以通过mysql控制台使用select语句把数据导出到excel文件中。
下面先介绍怎么导出为excel文件,然后介绍怎么导出为insert语句。
1、通过终端操作。
mysql -h主机IP -u用户名 -p密码
如:
这时就进入mysql命令控制台,终端上显示为:
3、然后通过show databases命令查看当前的所有数据库,使用use命令选择进入某个数据库,注意每个命令都要以英文分号“;”结束。
4、使用sql语句导出需要的数据,sql语句不限于单个表的查询。由于我的数据库编码是utf8格式,而office默认的编码则是gb2312,所以当某个字段中包含中文时,导出到excel后,中文内容是会乱码的,此时需要convert转换编码,具体使用方式:
我试着把文件保存到桌面,但始终提示没有权限,应该是和用户有关吧,无视了。当使用“./”这个路径保存时,实际是保存到了/usr/local/mysql/data下面。打开看看,哟西,不乱码了。
5、下面是把数据导出为sql的insert语句。
使用mysqldump命令,可以指定是单个表还是整个数据库导出。
打开终端,定位到/usr/local/mysql/bin,使用这个目录下的mysqldump。
导出单个表:
命令格式为:
mysqldump -u用户名 -p密码 -h主机地址 数据库名 表名 > 导出文件存储路径
例如:
-t:等同于--no-create-info,只导出数据,而不添加CREATE TABLE 语句。默认导出的文件中也有create table语句。
--extended-insert:使用具有多个VALUES列的INSERT语法,也就是传说中一次插入多条数据的INSERT句式。这样使导出文件更小,并加速导入时的速度,但是有可能sql语句会有长度限制,所以我并不推荐此种方式,比如我某个表中有500W条数据,难保能用一条insert语句可以执行完毕。此选项默认为打开状态,把他置为false,就是一条数据一个insert语句了。
--default-character-set:设置默认字符集,由于我的数据库和表均是设定为utf8编码格式,当不设置此选项时,导出的中文是乱码,奇怪的是官方说明中,说这个选项的默认值是utf8,表示不解。
导出整个数据库:
有导出就有导入。上面第5步导出的sql文件,可以直接在mysql workbench中执行,也可以使用mysqldump导入,这里说明一下如何使用mysqldump导入:
关于这个中文乱码问题,着实折腾了我好久好久。一开始就百度谷歌bing,网上大多复制粘贴的答案,在这里记录一下自己的情况,希望同路人不再走弯路。
其实我的修改很简单,把数据库的编码改为utf-8,在新建表时,把表的默认编码也改为utf-8,就可以了。就这么个小小的改动,让我足足折腾了一个通宵,表示有解决问题强迫症,问题不解决真的睡不着,唉~~~


四、总结。
似乎很多领导做报告都喜欢加个总结,说上一堆废话,虽然回回都听不懂,但感觉很厉害的样子。于是我也加一个总结:中文乱码真特么折腾人,这些年跟你斗争了好多回了,好了,总结完毕。
Mysql中文乱码以及导出为sql语句和Excel问题解决的更多相关文章
- mysql点滴_02程序中运行sql语句报字符集问题解决
程序中运行 "SELECT t.EVENT_TYPE_ID FROM RATABLE_EVENT_TYPE t WHERE t.NAME='帐期末费用转移事件'" 报错 错误码 ...
- sqoop导出到mysql中文乱码问题总结、utf8、gbk
sqoop导出到mysql中文乱码问题总结.utf8.gbk 今天使用sqoop1.4.5版本的(hadoop使用cdh5.4)因为乱码问题很是头痛半天.下面进行一一总结 命令: [root@sdzn ...
- windows mysql 中文乱码和中文录入提示太大错误的解决方法
今天操作mysql的时候很郁闷,因为修改默认字符集搞了半天,终于弄成了(关于如何把windows的默认字符集设置成功,可以参看另一篇博文,最终在mysql中输入show variables like ...
- c#+mysql 中文乱码
c#+mysql 中文乱码 遇到一个奇怪的问题,C#读取mysql中文正常,写入时发生乱码 网上查阅原因,发现如下信息 ---------------------------------------- ...
- 记录PHP post提交表单导入mysql中文乱码的问题
记录记录PHP post提交表单导入mysql中文乱码的问题 关于乱码,这是个糟糕的问题!涉及到很多地方 解决思路:程序所涉及的环境字符集不一致导致 mysql出现乱码一般是mysql数据库内部的字符 ...
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
- php mysql 中文乱码解决方法
本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ...
- 可遇不可求的Question之导入mysql中文乱码解决方法篇
可遇不可求的Question之导入mysql中文乱码解决方法篇 先 set names utf8;然后 source c:\1.sql ?
- JDBC mysql 中文乱码
中文乱码似乎是程序编写中永恒的一个话题和难点,就比如MySQL存取中文乱码,但我想做任何事情,都要有个思路才行,有了思路才知道如何去解决问题,否则,即使一时解决了问题,但过后不久又碰到同样的问题可能又 ...
随机推荐
- JSTL判断list的size()大小,以及choose(相当于if else作用)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ tag ...
- 使用centos 5.x 32位系统安装astgo 2014 v7.0教程(含全套安装文件)
版本特色: 全自动安装 安装过程中不用频繁输入yes或回车 自带完整号码归属地数据库 自带触屏版WAP ·首先确定你需要使用astgo 2014 7.0还是7.3: astgo 2014 v 7.0 ...
- Python随笔-切片
Python为取list部分元素提供了切片操作,list[begin:end]获取list的[begin,end)区间元素. 可以用负数索引. tuple.str都是list的一种,所以也适用. 可以 ...
- HeadFirst HTML&CSS
CH1 认识HTML HTML和CSS是我们用来创建网页的语言:HTML是超文本标记语言(HyperText Markup Language)的缩写,用来建立网页的结构:CSS是层叠样式表(Casca ...
- 解决:efi usb device has been blocked by the current security policy
解决:efi usb device has been blocked by the current security policy 问题描述:U盘装系统或者其他操作时,是因为BIOS安全策略,出现上述 ...
- webstorm进行VisualSVN配置及上传项目到项目库
以前建站一直都是自己一个人,最近要做一个比较大的网站,寻思着利用svn在整个开发过程中会比较快,于是摸索着配置了一下. 首先,下载VisualSVN这个软件,官网链接 https://www.visu ...
- CSS——行业动态demo
1.padding的运用:子div继承父div的宽,子div的padding-left值是不会撑大的. 2.背景图片的运用:不平铺.定位 3.ul本身就是一个盒子,它的高度是li中的字体的默认高度撑起 ...
- IOS: Xcode报 Undecleared selector Warning错误的解决方法
Undecleared selector Warning 是编译器报的,特别是升级到IOS7 默认PROJ设定的时候,会出现这种问题,如果从代码上看语法完全没有问题,那么就可以在Xcode里面设置禁 ...
- Redis 之消息发布与订阅(publish、subscribe)
使用办法: 订阅端: Subscribe 频道名称 发布端: publish 频道名称 发布内容 一般做群聊,聊天室,发布公告信息等.
- centOS7创建python虚拟环境
参考: 非常棒的2篇博客 https://www.centos.bz/2018/05/centos-7-4-%E5%AE%89%E8%A3%85python3%E5%8F%8A%E8%99%9A%E6 ...