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提供了丰富的命令行工具用于数据库的导入导出操作。对于这些操作,尤其需要掌握的是mysqldump命令和MySQL的Source命令的使用方法。 首先,mysqldump是MySQL用于备份数据库的命令行工具。...
MySql修改访问访问权限、导入、导出、查看字符集、修改初始密码、查看数据库位数
类似地,这里通过指定`--default-character-set=gb2312`来告知MySQL使用`gb2312`字符集导入数据。 ##### 4.3 性能考虑 需要注意的是,在执行上述操作时,可能会遇到性能问题。特别是当处理的数据量非常大时,比如...
在导出和导入过程中,应确保源数据库和目标数据库的字符集设置一致,避免数据乱码问题。 3. 错误处理: 在导入过程中,可能会遇到错误,如语法错误、数据类型不匹配等,需要根据错误日志进行调试和修复。 总结,...
在进行数据库管理时,我们经常会遇到数据导入导出的问题,特别是在使用Navicat与MySQL进行交互时。Navicat是一款非常流行的数据库管理工具,而MySQL则是一种广泛应用的关系型数据库管理系统。当我们在Navicat中对...
### Linux系统下MySQL数据库的导入导出 在Linux环境下管理和操作MySQL数据库是非常常见的需求,尤其在数据迁移、备份以及恢复等场景中尤为重要。本文将详细介绍如何在Linux系统中进行MySQL数据库的导入与导出,包括...
- 数据导入导出时,指定相应的字符集,如`LOAD DATA INFILE ... CHARACTER SET utf8 INTO TABLE ...;` - 在应用程序中设置正确的字符集,如Java的JDBC连接字符串中指定`useUnicode=true&characterEncoding=utf8`。...
2. **字符集兼容**:检查并确保两个数据库的字符集一致或兼容,以避免字符乱码问题。 3. **权限与用户设置**:在Oracle中创建相应的用户并授予必要的权限,以便于数据导入。 4. **约束与索引**:在导入数据前,先...
综上所述,Spring3 MVC + POI 实现 Excel与MySQL 的导入导出是企业级应用中的常见技术组合,通过合理的设计和实现,可以有效地提高数据处理的效率和灵活性。开发者应当熟练掌握Spring MVC的控制器设计、服务层业务...
- 在处理中文乱码问题时,尽量使用统一的字符集,比如统一使用“utf8mb4”或者“gbk”等,以减少因为字符集不一致导致的问题。 - 在导入大量数据时,可以考虑先导入少量数据进行测试,确保中文字符能够正常显示后再...
正确的做法是先导出数据和表结构,修改字符集,再重新导入数据。 **具体步骤如下**: 1. **导出表结构**:使用`mysqldump`命令导出表结构,并修改导出文件中的字符集定义。 2. **导出数据**:再次使用`mysqldump`...
#### 二、MySQL字符集设定 1. **修改配置文件**: - 打开MySQL的配置文件 `my.ini`。 - 在 `[mysql]` 节点下添加 `default-character-set=gbk`。 - 在 `[mysqld]` 节点下添加 `default-character-set=gbk`。 ###...
- 使用正确的字符集进行数据导入和导出; - 在连接数据库时明确指定字符集; - 更新数据库表的字符集和排序规则,以适应新的数据类型。 总之,《MYSQL字符集与乱码问题分析》不仅回顾了字符集的发展历程,还详细...
其中 `file_path` 是之前通过 `OUTFILE` 生成的文件路径,`table_name` 是目标表名,`charset` 是文件的字符集。 2. **示例**: ```sql LOAD DATA INFILE '/usr/local/mysql/data/test.sql' INTO TABLE test ...
- **字符集问题**:在不同的系统之间迁移时,可能会遇到字符集不兼容的问题,需要注意转换或统一字符集。 - **大文件处理**:对于大型数据库,备份和恢复的时间会比较长,建议在非高峰时段进行操作。 通过以上详细...
在使用 PHPmyadmin 导出 MySql 数据库时,经常会遇到中文乱码的问题,这是因为数据库的字符集编码问题。中文网站使用的字符集编码一般是 gb2312、gbk、utf8 等三种,而 PHPmyadmin 的默认字符集是 latin1_swedish_ci...
在IT领域,数据库之间的导入导出是一项至关重要的任务,尤其对于数据迁移、备份恢复、数据分析等场景。本文将深入探讨如何使用Java实现不同(或相同)数据源的数据库间的数据导入导出,以及异构数据源之间数据的迁移...
3. 数据格式:导出时可以指定字符集和编码,确保数据在导入后能正确显示。 4. 表锁:在导入期间,为了防止数据冲突,可能需要锁定相关表。 5. 备份:在执行任何导入导出操作前,确保有最新的数据库备份,以防意外。 ...
总结来说,解决MySQL导入导出CSV文件时的中文乱码问题,主要涉及以下几个步骤: 1. 确保CSV文件编码为UTF-8。 2. 在MySQL配置文件中设置客户端和服务端的字符集为UTF-8。 3. 重启MySQL服务以应用配置更改。 4. 如果...