MySQLl-更改生产线上MySQL数据字符集的方案

下面模拟将Latin1字符集的数据库修改为GBK字符集的实际过程

1,导出表结构

mysqldump -uroot -p --default-character-set=latin1 -d dbname >alltable.sql;

--default-character-set=gbk  表示以GBK字符集进行连接
-d 只导出表结构

2,编辑alltable.sql 将Latin1改成GBK

可以sed批量替换

3,确保数据库不再更新,导出所有数据

mysqldump -uroot -p123456 --quick --no-create-info --extended-insert 
--default-character-set=latin1 dbname >alldata.sql

参数说明:

--quick:用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有的行,并输出前cache到内存中

--no-create-info:不创建create table 语句

--extended-insert: 使用包括几个values列表的多行insert语法,这样文件更小,ID也小,导入数据时候非常快

--default-character-set=latin1:按照原有的字符集导出数据,这样导出的文件中,所有中文都是课件的不会保存成乱码

4,打开data.sql 将set names latin1 修改成set names gbk;

加入配置文件中已经全部配置好字符集,这一步可以不操作。推荐执行修改配置文件

5,创建库

create database dbname default character gbk;

6,创建表,执行alltable.sql

 mysql -uroot -p dbanme <alltable.sql

7,导入数据

mysql -uroot -p dbanme <alldata.sql

总结:  latin1---->gbk

1, 导出表结构,sed 批量修改字符集为gbk

2, 导出所有数据

3, 修改mysql服务器和客户端的编码为gbk

4, 删除原有的库,表以及数据

5,导入新的建库以及建表的语句

6,导入mysql的所有数据

时间: 2024-10-14 07:35:01

MySQLl-更改生产线上MySQL数据字符集的方案的相关文章

MySQL多字节字符集造成主从数据不一致问题

问题产生线上一直有个历史遗留问题,最近DBA提了出来,所以跟了下代码,作了下简单分析,问题描述如下:在master-slave的环境下,对master上的某个表中的数据插入,会导致master-slave数据不一致的情况,通过反复试验,确定出现该情况的条件如下: master上设置了character_set_server=gbk 应用中采用了prepared statement并且设置了useCursorFetch=true 对于master上某个表中的int字段,采用了字符的形式进行插入 比

大数据技术之_18_大数据离线平台_02_Nginx+Mysql+数据收集+Web 工程 JS/JAVA SDK 讲解+Flume 故障后-如何手动上传 Nginx 日志文件至 HDFS 上

十一.Nginx11.1.介绍11.2.常见其他 Web 服务器11.3.版本11.4.Nginx 安装11.5.目录结构11.6.操作命令十二.Mysql12.1.介绍12.2.关系型数据库(SQL)种类12.3.特征12.4.术语12.4.与非关系型数据库比较(Not Only SQL)12.4.1.种类12.4.2.特征12.4.3.总结十三.数据收集13.1.收集方式13.2.数据的事件类型13.2.1.Launch 事件13.2.2.PageView 事件13.3.Nginx 日志收集

Linux上检查MySQL数据表的存储引擎类型三板斧

MySQl主要使用两种存储引擎:MyISAM 和 Innodb.MyISAM是非事务的,因此拥有读取更快,然而InnoDB完全支持细颗粒度的事务锁定(比如:commit/rollback).当你创建一张新的MySQL表时,你要选择它的类型(也就是存储引擎).如果没有选择,你就会使用与预设置的默认引擎. 如果你想要知道已经存在的MySQL数据表的类型,这里有几种方法达到. 方法一 如果你可以访问phpMyAdmin,你可以从phpMyAdmin找出默认的数据库类型.从phpMyAdmin中选中数据

python字符集的转换(mysql数据乱码的处理)

本文参考:http://blog.csdn.net/crazyhacking/article/details/39375535   谢谢整理! chardet模块:http://blog.csdn.net/tianzhu123/article/details/8187470 字符集转换部分:http://blog.chinaunix.net/uid-26249349-id-2846894.html 1.mysql乱码问题: 背景:两个msyql库,字符集均为gbk,需要从A库中取数据,插入到B库

mysql数据校验之字符集问题

场景:主库DB:utf8字符集备库DB:gbk字符集 需求:校验主备数据是否一致,并且修复 校验过程:设置主库连接为utf8,设置备库连接为gbk,分别进行查询,将返回的的结果集按记录逐字段比较. 显示结果:原本相同的汉字字符,数据校验认为不一致. 原因分析:对于主库而已,由于建立连接的字符集为UTF8,则返回的汉字字符编码为UTF8格式:对于备库而言则是GBK格式,而程序中通过字符串比较函数strcasecmp进行比较,显然不同的字符集编码,相同的字符有不同的二进制,因此结果肯定不会相等. 进

迁移mysql数据到oracle上

转自:http://www.cnblogs.com/Warmsunshine/p/4651283.html 我是生成的文件里面的master.sql里面的sql,一个一个拷出来的. 迁移mysql数据到oracle上 一.   服务器本地安装Oracle11G或10G 二.   在运行中输入sqlplus /nolog,oracle中创建表空间. 三.   安装完成后在运行中输入 sql developer打开sql developer (就是本机自带的) 四.   选择jdk版路径(jdk版本

mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法(摘录)

mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添加的文章总数并且按照时间从大到小排序,则查询语句如下: select * from `article` where date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d'); 或者: selec

用mapreduce实现将mysql数据导出到HDFS上

因为业务需要,需要将一批mysql数据导入到HBASE,现在先将数据从Mysql导出到HDFS. 版本:hadoop CDH4.5,Hbase-0.946 1.实体类 YqBean 是我的实体类,请根据自己需要修改,实体类需要 implements Writable, DBWritable. 2.MR实现 import java.io.IOException; import java.util.Iterator; import org.apache.hadoop.conf.Configurati

转 mysql 中sql 语句查询今天、昨天、7天、近30天、本月、上一月 数据

转自 http://blog.csdn.net/ve_love/article/details/19685399 转 mysql 中sql 语句查询今天.昨天.7天.近30天.本月.上一月 数据