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

前言

数据库里面,部分数据表和数据是latin1的,部分数据表和数据是UTF8,还有部分表,表结构是utf8而数据是latin1。

这种奇葩情况,工作了十几年的我,还是第一次碰到。下面说一下,怎么样字符集统一成utf8

1,建一个空数据库

2,把表结构和数据是utf8的表导出,然后直接导入到新的数据库中

3,数据表和数据都是latin1的表,先导出表结构和数据,加上--default-character-set=latin1,将导出文件中,latin1改为utf8,在导入到新的数据库中。

4,表结构是utf8,表数据是latin1的,有二种方法:

4.1,先导出表结构,导入到新的数据库中。导出数据,加上--default-character-set=utf8,因为表结构是utf8,表数据是latin1,入库时已乱码。在将数据导入到新库中。这种方案有缺点,--default-character-set=utf8,导出的数据可能会有丢失,导出的数据,在导入时可能会报错。

4.2,可以通过binary字符集做中转,推荐这种方法

UPDATE user SET user_name = CONVERT(CONVERT(CONVERT(user_name USING latin1) USING binary) USING UTF8); 

这种方法,省去了导出导入的麻烦,速度比较快,11w条数据,差不多5-6秒

数据库设计这块非常重要,在设计数据库时一定要考虑清楚。地基不牢,大厦迟早会倒的。

(0)

相关推荐

  • DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法

    只是中文出现乱码时,在链接数据库后面,加上这一句 utf8的话 mysql_query("SET NAMES 'utf8'"); gbk的话 mysql_query("SET NAMES 'gbk'");

  • 简析mysql字符集导致恢复数据库报错问题

    mysql字符集编码错误的导入数据会提示错误了,这个和插入数据一样如果保存的数据与mysql编码不一样那么肯定会出现导入乱码或插入数据丢失的问题,下面我们一起来看一个例子. <script>ec(2);</script> 恢复数据库报错:由于字符集问题,最原始的数据库默认编码是latin1,新备份的数据库的编码是utf8,因此导致恢复错误. [root@hk byrd]# /usr/local/mysql/bin/mysql -uroot -p'admin' t4x < /t

  • mysql修改数据库编码(数据库字符集)和表的字符编码的方法

    mysql将表的字符编码转换成utf-8 复制代码 代码如下: alter table tb_anniversary convert to character set utf8; 修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 复制代码 代码如下: mysql> show variables like'character%'; +--------------------------+----------------------------+ |Variable_name 

  • mysql字符集和数据库引擎修改方法分享

    MySQL字符集:cp1252 West European (latin1) ,解决乱码问题 使用虚拟主机空间上的phpmyadmin操作数据库的时候,如果看到phpmyadmin首页上显示的MySQL 字符集为cp1252 West European (latin1),当我们导入数据时就会出现乱码,解决的方法是: 在phpmyadmin首页的右边有个Language选项,把默认的中文 - Chinese simplified-gb2312改成 中文 - Chinese simplified,则

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

    前言 数据库里面,部分数据表和数据是latin1的,部分数据表和数据是UTF8,还有部分表,表结构是utf8而数据是latin1. 这种奇葩情况,工作了十几年的我,还是第一次碰到.下面说一下,怎么样字符集统一成utf8 1,建一个空数据库 2,把表结构和数据是utf8的表导出,然后直接导入到新的数据库中 3,数据表和数据都是latin1的表,先导出表结构和数据,加上--default-character-set=latin1,将导出文件中,latin1改为utf8,在导入到新的数据库中. 4,表

  • django连接Mysql中已有数据库的方法详解

    我的Mysql中已经有了项目需要使用的相关数据库,现在需要通过django来获取Mysql里的数据并使用,下面记录配置django与mysql的连接过程. (此处默认您已经建好了django框架,如果没有准备好django,请参照我本篇文章 https://www.jb51.net/article/249861.htm 首先需要在项目的settings.py文件中配置mysql的连接信息:把之前配置的sqlite配置信息替换.之前默认的数据库配置信息如图,是与sqlite连接的 现在我们需要替换

  • MySQL字符集的基本类型与统一字符集分析

    以下的文章主要介绍的是MySQL字符集的基本类型, 统一字符集的实际操作方法,等相关内容的介绍,以下就是MySQL字符集的相关内容的描述,希望你会在以后的学习或是工作中带来很大的帮助. 一. MySQL字符集类型 MySQL服务器中有六个关键位置使用了字符集的概念,他们是:client .connection.database.results.server .system. a.其中client是客户端使用的字符集,相当于网页中的字符集设置如下<meta http-equiv="Conte

  • C++利用MySQL API连接和操作数据库实例详解

    1.C++连接和操作MySQL的方式 系列文章: MySQL 设计和命令行模式下建立详解 C++利用MySQL API连接和操作数据库实例详解 在Windows平台,我们可以使用ADO.ODBC或者MySQL API进行连接和操作.ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的一个用于存取数据源的COM组件.它提供了程序语言和统一数据访问方式OLE DB的一个中间层,也就是Microsoft提出的应用程序接口(API)用以实现访问关系或非关

  • MySQL之权限以及设计数据库案例讲解

    权限及设计数据库 用户管理 使用SQLyog 创建用户,并授予权限演示 基本命令 /* 用户和权限管理 */ ------------------ 用户信息表:mysql.user -- 刷新权限 FLUSH PRIVILEGES -- 增加用户 CREATE USER kuangshen IDENTIFIED BY '123456' CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串) - 必须拥有mysql数据库的全局CREATE USER权限,或

  • python用sqlacodegen根据已有数据库(表)结构生成对应SQLAlchemy模型

    目录 应用场景 福音 快快使用 模型类效果 注意事项 今天介绍一个后台开发神器,很适合当我们数据库中已存在了这些表,然后你想得到它们的model类使用ORM技术进行CRUD操作(或者我根本就不知道怎么写modle类的时候); 手写100张表的model类? 这是......... 是不可能的,这辈子都不可能的. 因为我们有sqlacodegen神器, 一行命令获取数据库所有表的模型类. 应用场景 1.后台开发中,需要经常对数据库进行CRUD操作: 2.这个过程中,我们就经常借助ORM技术进行便利

  • Mysql通过explain分析定位数据库性能问题

    目录 引言 explain基础 exlpain分析实战 总结 引言 数据库性能优化是每个后端程序猿必备的基础技能之一,而Mysql中的explain堪称Mysql的性能优化分析神器,我们可以通过它来分析SQL语句的对应的执行计划在Mysql底层到底是如何执行的,它对于我们评估SQL的执行效率以及确定Mysql的性能优化方向具有重要的意义.但是很多同学对于如何根据explain对已有SQL进行深度的执行分析还是丈二和尚摸不着头脑,因此本文详细阐述通过explain分析定位数据库性能问题. expl

  • 生成PDF全攻略之在已有PDF上添加内容的实现方法

    项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此记录总结,方便下次以不变应万变,需要的 jar 请移步:生成PDF全攻略 PdfReader reader = new PdfReader("E:\\A.pdf"); PdfStamper stamper = new PdfStamper(reader, new FileOutputStr

  • MySQL入门(一) 数据表数据库的基本操作

    序言 这类文章,记录我看<MySQL5.6从零开始学>这本书的过程,将自己觉得重要的东西记录一下,并有可能帮助到你们,在写的博文前几篇度会非常基础,只要动手敲,跟着我写的例子全部实现一遍,基本上就搞定了,前期很难理解的东西基本没有,所以写博文的内容,就是以练题的形式来呈现的. 需要用的资料以链接的形式给需要的同学. 我用的mysql版本为: Mysql-5.5.45-win64.msi 密码是:26zw 图形化工具 Navicat(前期不推荐用,直接手动敲): Navicat 密码:c7fs

  • MySQL 8.0.18给数据库添加用户和赋权问题

    1. 首选使用root用户登录数据库  mysql -uroot -p 2. 使用mysql 数据库 USE mysql; 3. 为mysql创建用户:dev 密码为:dev12345 CREATE USER dev IDENTIFIED BY 'dev12345'; 4. 查看下用户dev的权限 SELECT * FROM user WHERE user='dev' ; SHOW GRANTS FOR dev; 5. 给用户dev在数据库名为dev_db上赋EXECUTE(执行存储过程),IN

随机推荐