MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级、降级,特别是升级MySQL的版本,为了不让程序继续沿用Latin1字符集之后对以后Discuz!版本升级的影响和安装SupeSite,这就需要我们进行字符集的转换!

本人转换过好多数据了,也用过了好多的办法,个人感觉最好用的就是使用MySQL命令导出导入中将字符集转换过去!

由于字符集比较多,现在主要举GBK和Latin1这两种字符集之间的转换!

首先我将讲解一下如何将MySQL从GBK转换为Latin1的(如果是UTF8或者BIG5转换即将GBK换成相应的字符集即可)!这种问题常发生在MySQL从MySQL4.1及其以上版本转换为MySQL4.1以下的版本的过程中!有的人图个方便,特别是有主机权限的,直接将MySQL的data目录下的文件拷贝过去了,这样造成的问题就是乱码问题!当然我所说的这些都要求你必须拥有主机权限,虚拟主机用户可以在本地搭建好论坛,下载数据到你的本地,然后把数据导入到你本地的数据库,然后进行字符集的转换!

现在的步骤就是将MySQL的数据导出了,在mysql的命令提示符下(linux系统为mysql的命令目录下),输入下面导出的命令:

mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz>discuz.sql

这样就轻松的将数据从MySQL数据库中导出了,此时导出的文件在与mysql命令同级的目录下,即bin目录下,而且已经将MySQL字符集导出为Latin1的了!现在要做的就是将数据导入MySQL4.0中去!

同样在4.0版本的mysql命令提示符下(linux系统为mysql的命令目录下),输入下面导入命令:

mysql -uroot -p --default-character-set=latin1 -f discuz

这样就将字符集从GBK转为Latin1同时将MySQL从4.1以上版本的转为MySQL4.0的了!

现在讲解一下如何从Latin1字符集转换为GBK的!

由于只有MySQL4.1以上的版本才有字符集的概念,所以如果你要将MySQL4.0的字符集从Latin1转换为GBK字符集的话,必须导入到MySQL4.1以上的版本中,然后再导出!这里面就多了一个导出为Latin1的步骤!

同样在MySQL4.0的命令提示符下,输入下面导出的命令:

mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql

然后导入到MySQL4.1中,输入下面导入的命令:

mysql -uroot -p --default-character-set=latin1 -f discuz

然后在MySQL4.1下转换字符集,执行下列导出命令:

mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz>discuz.sql

然后执行导入命令:

mysql -uroot -p --default-character-set=gbk -f newdiscuz

如果不出问题的话,那么转换就完毕了!其实整个过程还是比较简单的,只是过程看起来比较麻烦些,但是过程却是很简单明了的!

下面举出一个在导入过程中极易容易出现的问题!

在导入的时候容易出现unknown command '/'这样的错误,其实这是由于MySQL在导出的时候,它有时候给一些繁体字后面自动加上了个反斜杠造成的!解决此问题的办法就是打开备份的sql(这里为discuz.sql),提示错误的时候会提示具体哪行出现了错误,找到那行,把反斜杠去掉就行了!其实你可以用Ultraedit这些文本处理的工具,批量的去处理这些反斜杠

!凭个人经验,有很多用户名取的比较怪,这样就容易出现反斜杠,这样只要纠正那些用户名就行了!

以上是个人在转换数据过程中的一些经验之谈,很多地方还有待大家完善!

【知识补充】

就是mysql自带的工具mysqldump,这个工具十分强大,可以导出数据,并且可以导出不同版本的数据、也可以导出用于其他数据库的数据. 这个工具在命令行、cmd下用的,如果你的msyql/bin目录没有配置在系统的环境变量里,需要先cd到mysql的bin目录.

基本导出

mysqldump -u 数据库用户名 -p 数据库名称 [表名] > 导出到文件的路径名

例如:导出test_db这个数据库,数据库用户为root没有密码(没有密码就不用加 -p 了):

mysqldump -u root test_db > c:/test.sql这样就可以到处test这个数据库了

如果我要导出 test 数据库中的user 表用 ajin 这个用户 密码是 123

mysqldump -u 用户名 -p密码 test_db user >c:/test_user_table.sql

回车后提示输入密码就可以了

在导出过程中改变数据库默认的字符集

例如:我要导出 test_db 这个数据库 转换编码为 utf8

mysqldump -u 用户名 -p密码 --default-character-set=utf8 test_db >c:/test.sql

转换成其他字符只需替换 utf8 就可以了

导出不同版本数据或者导出给数据库用的数据

例如:我的数据库 Mysql 4.1 的 我要导出一个 默认字符集 utf8 的 4.0版本的数据

mysqldump -u 用户名 -p密码 test_db --compatible=mysql40 --default-character-set=utf8 test > c:/test.sql

就可完成了所谓的降级 --compatible= 可以跟得参数有 mysql323 mysql40 oracle mssql db2 等等.

导出整个数据库mysqldump -u 用户名 -p密码  数据库名 > 导出的文件名

mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

导出一个表

mysqldump -u 用户名 -p密码  数据库名 表名> 导出的文件名

mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

导出一个数据库结构

mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >wcnc_db.sql

-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

导入

mysql -u 用户名 -p密码  接收数据的数据库名 < 要导入的文件路径

例如:我要导入 test.sql 这个数据到discuz_db这个数据库

mysql -u 用户名 -p密码 discuz_db

导入数据库

常用source 命令,进入mysql数据库控制台,

如mysql -u root -p

mysql>use 某个数据库的名字

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source wcnc_db.sql

mysql导出文件名乱码_Mysql导出导入乱码问题解决相关推荐

  1. mysql导出d盘_mysql 导出导入数据库

    一.导出数据库 1.进入MySQL目录下的bin文件夹 运行cmd :在窗口输入命令 d: 进入d盘:输入 cd Program Files\MySQL\MySQL Server 5.7\bin 命令 ...

  2. mysql c 中文字符串_MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法...

    开源数据库MySQL从来都是中小企业构建web应用的首选,特别是和PHP配合简直就是一 对黄金搭档,深受web开发人员的喜爱.但自从4.1以来MySQL加入了多字符集的支持,很多MySQL使用者发现中 ...

  3. mysql存储过程中文乱码_mysql存储过程中文乱码

    MySQL 中存储过程 中文乱码问号??? mysql 中文乱码一直是一个老大难的问题,接下来一一解决!!!! 数据库存储数据乱码 存储过程中数据乱码 001 数据库存储数据乱码 相信大家遇到最多就是 ...

  4. mysql导出csv数据_mysql 导出 csv数据命令

    mysql 导出 csv数据命令 导出 select field1,field2,field3 from tablename into outfile '/home/output1.csv' fiel ...

  5. mysql客户端汉化_Mysql客户端中文乱码问题解决

    在Linux机器上使用Mysql客户端访问获取中文有时候是乱码,如下: mysql> select *from t_user;+----+-----------+-------------+-- ...

  6. mysql 中日韩 乱码_mysql字符集及乱码问题

    MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的. character-set-database:当 ...

  7. mysql数据导入导出 CSV格式_MySQL中导入导出CSV格式数据

    原标题:MySQL中导入导出CSV格式数据 预备阅读:MySQL中的主键问题和赋权限问题 今天来讲一下在MySQL中导入和导出CSV格式数据的操作. CSV格式数据 逗号分隔值(Comma-Separ ...

  8. mysql varbinary 乱码_mysql解决中文乱码

    mysql>use mydb; mysql>alter database mydb  character set utf8;! 这种方法只对设置后重新创建的表有效,对已存在的表无效 des ...

  9. mysql 导出数据 权限_MySQL 导出数据

    mysql的数据导出几种方法 http://www.blogjava.net/fisher/articles/90455.html 1.导出文件,需要相关权限 mysql数据导出的方法有很多,例如my ...

最新文章

  1. 企业分布式微服务云SpringCloud SpringBoot mybatis (二)Spring Boot属性配置文件详解...
  2. pythonapp下载-QPythonapp下载
  3. 十进制数转为十六进制字符串
  4. angular 自定义检验valid
  5. ACL 2019 开源论文 | 使用跨领域语言建模的跨领域命名实体识别
  6. 中文论文黑白矢量图绘制
  7. 并不对劲的bzoj4816:loj2000:p3704[SDOI2017]数字表格
  8. strtok(), strtok_s() 字符串分割函数
  9. Scala教程之:Enumeration
  10. android百度地图标方向,Android百度地图之方向感应和模式更改
  11. AD制图相关问题总结
  12. 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析
  13. 技术管理者怎样跳出“泥潭”
  14. 和尚感谢你,要避开,这样才能求到福
  15. python调用按键精灵插件_按键精灵 插件命令 重中之重务必要记住怎么操作
  16. 如何用Matlab求极限
  17. 如何增加(软件测试)自动化测试面试成功率?只需学会主流设计模式PO+关键字驱动!
  18. 硬件设计4---什么是电感磁珠?
  19. (离散)设函数 f:A→B,g:B→C,证明:若g °f是满射,则g是满射.
  20. 语句摘抄——第26周

热门文章

  1. 百度快照的检索和反馈删除
  2. STM32开发项目:一些模拟电子开关的介绍与驱动
  3. MCAL知识点(二十五):QSPI实现菊花链功能
  4. 快速入门msp430g2553
  5. ubuntu 16.04连不上wifi解决了
  6. CSDN RSS客户端订阅说明
  7. 微信小游戏开发入门(一)-基础知识
  8. Python入门学习——DAY03
  9. 固态硬盘测试工具-AS SSD Benchmark
  10. 【转】十大ERP“丑闻” 你有多少不知道?