`
Robinson
  • 浏览: 87996 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql 导入导出字符集问题

    博客分类:
  • DB
阅读更多

Mysql数据导入导出的时候,注意下是否需要指定字符集,尤其是使用某些工具导出的时候,默认已经使用了某种字符集导出的, 所以导入的时候需要指定才行,否则会出现乱码的现象。


下面是一些字符集设置的:

 

MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql 的字符集进行一下转换,MySQL版本的升级、降级,特别是升级MySQL的版本,为了不让程序继续沿用Latin1字符集之后对以后Discuz!版本 升级的影响和安装SupeSite,这就需要我们进行字符集的转换!
   本人转换过好多数据了,也用过了好多的办法,个人感觉最好用的就是使用MySQL命令导出导入中将字符集转换过去!
   现在我将用图文并茂的方式向大家展示一下如何将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
  如图1(windows下)和图2(linux下)所示

图1:
点击在新窗口中浏览此图片


图2:
点击在新窗口中浏览此图片


   这样就轻松的将数据从MySQL数据库中导出了,此时导出的文件在与mysql命令同级的目录下,即bin目录下,而且已经将MySQL字符集导出为Latin1的了!现在要做的就是将数据导入MySQL4.0中去!
   同样在4.0版本的mysql命令提示符下(linux系统为mysql的命令目录下),输入下面导入命令:
   mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
   如图3(window下)和图4(linux下)所示

图3:
点击在新窗口中浏览此图片


图4:


   这样就将字符集从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<discuz.sql
   然后在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<discuz.sql
   如果不出问题的话,那么转换就完毕了!其实整个过程还是比较简单的,只是过程看起来比较麻烦些,但是过程却是很简单明了的!
   下面举出一个在导入过程中极易容易出现的问题!
   在导入的时候容易出现unknown command '/'这样的错误,其实这是由于MySQL在导出的时候,它有时候给一些繁体字后面自动加上了个反斜杠造成的!解决此问题的办法就是打开备份的sql(这 里为discuz.sql),提示错误的时候会提示具体哪行出现了错误,找到那行,把反斜杠去掉就行了!其实你可以用Ultraedit这些文本处理的工 具,批量的去处理这些反斜杠

!凭个人经验,有很多用户名取的比较怪,这样就容易出现反斜杠,这样只要纠正那些用户名就行了!
   以上是个人在转换数据过程中的一些经验之谈,很多地方还有待大家完善!






       Mysql 数据的导出
     有的站长经常用一种最直接的办法就是拷贝数据库文件夹的办法,这个方法确实简单,但是不提倡,在跨版本或者跨不同字符集系统是很容易出问题.数据库 4.1版本有两种存储数据的方式在配置的时候可选,一种是和以前一样的每个数据库存放在单独的文件夹里,另一种叫什么来着我忘了,这种所有的数据库都放在 一个文件里,巨大的一个文件,所以对于后者就不可以用拷贝的方法了,用什么呢?
     下面介绍:
     就是mysql自带的工具mysqldump,这个工具十分强大,可以导出数据,并且可以导出不同版本的数据、也可以导出用于其他数据库的数据. 这个工具实在命令行、cmd下用的 ,如果你的msyql/bin目录没有配置在系统的环境变量里,就先cd到mysql/bin目录.

     1、先介绍简单得导出: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
     回车后提示输入密码就可以了
     2、在导出过程中改变数据库默认的字符集
     例如:我要导出 test_db 这个数据库 转换编码为 utf8 (utf8 我最常用的)
     mysqldump -u 用户名 -p密码 --default-character-set=utf8 test_db >c:\test.sql
     转换成其他字符只需替换 utf8 就可以了
     3、导出不同版本数据或者导出给数据库用的数据
     例如:我的数据库 Mysql 4.1 的 我要导出一个 默认字符集 utf8 的 4.0版本的数据
     mysqldump -u 用户名 -p密码 test_db --compatible=mysql40 --default-character-set=utf8 test_db >c:\test_user_table.sql
     就可完成了所谓的降级 --compatible= 可以跟得参数有 mysql323 mysql40 oracle mssql db2 等等.
     二 数据的导入
     在命令行、cmd下用的,如果你的msyql/bin目录没有配置在系统的环境变量里,就先cd到mysql/bin目录.
     比如我要导入 test.sql 这个数据到discuz_db这个数据库
     mysql -u 用户名 -p密码 discuz_db <c:\test_user_table.sql



  1.导出整个数据库
  mysqldump -u 用户名 -p密码  数据库名 > 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
  2.导出一个表
  mysqldump -u 用户名 -p密码  数据库名 表名> 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
  3.导出一个数据库结构
  mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >wcnc_db.sql
  -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
  4.导入数据库
  常用source 命令
  进入mysql数据库控制台,
  如mysql -u root -p
  mysql>use 数据库
  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
  mysql>source wcnc_db.sql

分享到:
评论

相关推荐

    mysql命令行导入导出

    mysql导出乱码 可以使用 导入导出命令 指定默认字符集,使导出的字符为中文

    MySql导入导出命令

    MySql修改访问访问权限、导入、导出、查看字符集、修改初始密码、查看数据库位数

    完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题

    本人转换过好多数据了,也用过了好多的办法,个人感觉最好用的就是使用MySQL命令导出导入中将字符集转换过去! 现在我将用图文并茂的方式向大家展示一下如何将MySQL字符集进行转换,由于字符集比较多,现在主要举GBK和...

    MySql转换成Oracle工具

    支持所有版本的Mysql字符集 对超大数据表的导出进行了优化处理 Convert Mysql to Oracle 功能限制 不能转换MYSQL的存储过程 Convert Mysql to Oracle 运行需求 有相应的数据库操作权限 在机器中安装了ORACLE...

    php版mysql大数据库备份和恢复工具

    基本上,一般的博客/论坛数据都不能保证这种纯净性,谁也不能保证你的文章中不会混合使用简体和繁体文字,所以这种跨字符集的导入导出数据难度很大.绝对不要轻易尝试这种游戏.目前的主流论坛如Discuz、PHPWind等都提供...

    mysql如何在已有数据库上统一字符集

    下面说一下,怎么样字符集统一成utf8 1,建一个空数据库 2,把表结构和数据是utf8的表导出,然后直接导入到新的数据库中 3,数据表和数据都是latin1的表,先导出表结构和数据,加上–default-character-set=latin1,...

    mysql命令行还原phpMyAdmin导出的含有中文的SQL文件

    这样吧,先用MySQL-Front创建了空数据库,然后使用mysql命令行导入吧。 1)使用MySQL-Front创建了空数据库 因为看脚本中对象都有DEFAULT CHARSET=gbk COMMENT=… 指令,所以字符集选择gbk   2)启动MySQL命令行,...

    mysql数据校验过程中的字符集问题处理

    在日常应用中,我们经常会遇到在不同的字符集的数据库直接进行数据的导入导出操作,针对这个问题,我们来进行讨论下

    MySql数据库课件

    MySql的安装、导入导出及图形化工具的使用、权限与安全、基础知识、存储引擎的选择及字符集、备份与恢复、索引与视图、MySql优化

    两个软件奥mysql转oracle oracle转mysql

    Convert Mysql to Oracle功能特点 可能转换所有的Mysql字段类型 支持所有版本的Mysql 可以将数据合并到已经存在的ORACLE表中 非常容易使用的向导模式 支持所有版本的Mysql字符集 对超大数据表的导出进行了优化处理

    Convert Mysql to Oracle v1.2

    Convert Mysql to Oracle功能特点可能转换所有的Mysql字段类型 支持所有版本的Mysql 可以将数据合并到已经存在的ORACLE表中 非常容易使用的向导模式 支持所有版本的Mysql字符集 对超大数据表的导出进行了优化处理

    mysql常见错误集锦

    #1067 – Invalid ...字符集:UTF-8 导入数据库数据库5.0.22,也是UTF-8 结果发现是phpadmin版本不兼容,以至于导出数据出现问题,使用mysqldump指令进行导出。 程序代码 mysqldump -uroot -p123456 thfxw&gt;d:

    Navicat.for.MySQL.Enterprise.v10.0.5.Incl.Keymaker

    Navicat是一个强大的MySQL数据库管理和开发工具。Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习。Navicat,使用了极好的图形用户界面(GUI),可以让你用...支持字符集及 unicode。

    DataTool.rar

    “基于delphi 7的excel数据导入导出”小工具,数据库基于mariaDB(mysql)。注意:oracle连接要注意中文字符集问题。

    MySQL命令大全

    9:导入.sql文件命令(例如D:/mysql.sql) mysql&gt;use database; mysql&gt;source d:/mysql.sql; 10:删除表 mysql&gt;drop TABLE MYTABLE; 11:清空表 mysql&gt;delete from MYTABLE; 12:更新表中数据 mysql&gt;update ...

    MYSQL常用命令大全

    9:导入.sql文件命令(例如D:/mysql.sql) mysql&gt;use database; mysql&gt;source d:/mysql.sql; 10:删除表 mysql&gt;drop TABLE MYTABLE; 11:清空表 mysql&gt;delete from MYTABLE; 12:更新表中数据 mysql&gt;update MYTABLE set ...

    MySQLDBA运维笔记.pdf

    mysql 总结........................................................................................................................................6 1.1 数据库的种类.......................................

    JavaSwing+MySQL实现的课堂点名系统源码+项目说明文档

    在文件中导入students.txt,注意文本的txt的编码集要为UTF-8,如果系统默认编码集打开文本文件出现乱码,那么需要将文本文件另存为UTF-8编码集的文件。 注意txt文件中数据类型要符合规则 : (1)每个数据之间要用...

Global site tag (gtag.js) - Google Analytics