一、导出数据。

先说明一下自己的环境: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、通过终端操作。

1 cd /usr/local/mysql/bin/

2、到达bin目录后,可以ls -l命令看看当前目录有哪些程序可以用,这里先用mysql,命令格式为:

mysql -h主机IP -u用户名 -p密码

如:

1 ./mysql -hlocalhost -uroot -p123456

注意前面加的"./"。

这时就进入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主机地址 数据库名 表名 > 导出文件存储路径

例如:

/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost -t --extended-insert=false --default-character-set=utf8 SpiderBBSDB Catalog > /Users/ethan/Desktop/Catalog.sql

其中用到了几个参数,简单说明一下:

-t:等同于--no-create-info,只导出数据,而不添加CREATE TABLE 语句。默认导出的文件中也有create table语句。

--extended-insert:使用具有多个VALUES列的INSERT语法,也就是传说中一次插入多条数据的INSERT句式。这样使导出文件更小,并加速导入时的速度,但是有可能sql语句会有长度限制,所以我并不推荐此种方式,比如我某个表中有500W条数据,难保能用一条insert语句可以执行完毕。此选项默认为打开状态,把他置为false,就是一条数据一个insert语句了。

--default-character-set:设置默认字符集,由于我的数据库和表均是设定为utf8编码格式,当不设置此选项时,导出的中文是乱码,奇怪的是官方说明中,说这个选项的默认值是utf8,表示不解。

导出整个数据库:

/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost -t --extended-insert=false --default-character-set=utf8 SpiderBBSDB > /Users/ethan/Desktop/SpiderBBSDB.sql

二、导入数据。

有导出就有导入。上面第5步导出的sql文件,可以直接在mysql workbench中执行,也可以使用mysqldump导入,这里说明一下如何使用mysqldump导入:

/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost --default-character-set=utf8 SpiderBBSDB < /Users/ethan/Desktop/Catalog.sql

三、关于java连接mysql写入中文乱码。

关于这个中文乱码问题,着实折腾了我好久好久。一开始就百度谷歌bing,网上大多复制粘贴的答案,在这里记录一下自己的情况,希望同路人不再走弯路。

其实我的修改很简单,把数据库的编码改为utf-8,在新建表时,把表的默认编码也改为utf-8,就可以了。就这么个小小的改动,让我足足折腾了一个通宵,表示有解决问题强迫症,问题不解决真的睡不着,唉~~~

四、总结。

似乎很多领导做报告都喜欢加个总结,说上一堆废话,虽然回回都听不懂,但感觉很厉害的样子。于是我也加一个总结:中文乱码真特么折腾人,这些年跟你斗争了好多回了,好了,总结完毕。

mysql导出excel出乱码_Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]...相关推荐

  1. debian mysql中文乱码_MySQL中文乱码的解决方法汇总

    当我们用PHP往MySQL数据库里插入中文时,一旦出现????乱码,很多同学就抓狂了,身为中国人,你却把中文汉字变成乱码,那我可不答应,于是乎我们就开始奔波于个大论坛发帖求助.... 对于MySQL中 ...

  2. mysql cluster 乱码_Mysql中文乱码问题完美解决方案

    原文:http://www.2cto.com/database/201108/101151.html MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin ...

  3. mysql set names中文乱码_mysql中文乱码解析

    相信大家在开发后台的过程中都遇到过中文乱码的问题,今天我就来讲讲其中的原因. 我这建了3张表,test_latin1,test_utf8,test_gbk,表结构如下 +-------+------- ...

  4. ado.net mysql中文乱码_mysql中文乱码

    mysql中创建数据库时已经指定了编码格式为utf8,JDBC代码中也解决了乱码问题.可是当sql语句中出现了中文后,查询结果就会出现异常,和预期的结果不同. 解决方法一: 在url后面指定要使用的编 ...

  5. mysql编码是乱码_mysql中文乱码 常见编码问题解决方法分享

    我是真的服了 mysql默认字符不是utf-8也不是GBK而是拉丁文字?? 在增删数据时 "中文字符" 老是乱码不停!害得我浪费不少时间在这上面 为各位之后不走坑 再此留下解决方法 ...

  6. mysql 书籍推荐 简书_Mysql复习必备----50条经典Sql语句

    关于学生,课程,成绩,教师表 student(学号#,姓名,性别,年龄) course(课程号#,课程名,教师号#) score(学号#,课程号#,成绩) teacher(教师号#,教师名) --1. ...

  7. mysql 批量添加字段前缀_MySQL中批量前缀表的sql语句

    1.批量删除前缀表sql语句 先查询生成需要操作的表 Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.t ...

  8. Mysql中文乱码以及导出为sql语句和Excel问题解决

    Mysql中文乱码以及导出为sql语句和Excel问题解决 参考文章: (1)Mysql中文乱码以及导出为sql语句和Excel问题解决 (2)https://www.cnblogs.com/zhao ...

  9. mysql中文乱码解决_mysql中文乱码解决方式

    近期项目使用到mysql.却突然出现了中文乱码问题.尝试了多种方案,最终解决乱码问题,总结一下解决方式,给遇到同样问题的人一点參考. 中文乱码的原因 1.安装mysqlserver的时候编码集设定有问 ...

最新文章

  1. Spring Framework------version4.3.5-----Reference学习心得-----总结
  2. 在ubuntu上玩flatpak打包的游戏
  3. java kafka client_Kafka Java Client基本使用及整合SpringBoot
  4. 说一下对象或数组转JSON怎么转【fastjson】
  5. 类加载器ClassLoader的角色
  6. linux 自动安装 yum,LINUX6安装YUM仓库和实现开机自动挂载
  7. python学习第19天
  8. Java阶段2-02JS:08ECMAScript BOM DOM:
  9. python re正则_正则表达式+Python re模块详解
  10. Tomcat session集群
  11. MyBatis官方文档——Java API部分
  12. 如何监控Tuxedo中间件?Oralce TUXEDO监控方案
  13. React子组件给父组件传值
  14. SSL基础:11:使用req子命令创建自签名证书
  15. 2018年最有前景的十大行业
  16. .net之微信企业号开发(二) 企业号人员身份认证与开发
  17. android自定义多选框 带图片,Android自定义单选多选下拉列表的实例代码
  18. 云标签,关键字图排版 html5 canvas版
  19. 从0到1Python数据科学之旅
  20. 2020丘成桐科学奖计算机名单,2016东润丘成桐科学奖(数学)国内各赛区获奖名单...

热门文章

  1. 敏感词过滤,并实现替换
  2. 【数据结构】- 二叉树基础操作
  3. WinForm里ListBox实现加入项目,并且排序。
  4. Romoting 通信DEMO(整理)
  5. [转]李战大师-悟透delphi 第九章 多层体系结构
  6. 解决hadoop no dataNode to stop问题
  7. BT下载原理学习简介
  8. AdaPrompt:进一步将下游任务融入到预训练模型
  9. KDD'21 | FaceBook :基于图的负采样方法
  10. Transformers Assemble(PART I )