zoukankan      html  css  js  c++  java
  • Mysql 字符集的修改步骤

    如果在应用开始阶段没有正确的设置字符集,在运行一段时间以后才发现 存在不能满足要求需要调整,

    又不想丢弃这段时间的数据,那么就需要进行字符集的修改。 字符集的修改不能直接通过 alter

    dataabase character set *** 或者 alter table tablename character set ***; 命令进行,这两个

    命令都没有更新已有记录的字符集, 而只是对新创建的表或者记录生效。
    已有的记录的字符集调整,需要先将数据导出,经过适当的调整重新导入后才可完成。

    以下模拟的是将latin1字符集的数据库修改成GBK字符集的数据库的过程。

    1> 导出表结构:
    mysqldump -uroot -p --default-character-set=gbk -d databasename > createtab.sql

    其中 --default-character-set=gbk 表示设置以什么字符集连接, -d 表示只导出表结构,不导出数

    据。

    2>手工修改 createtab.sql 中表结构定义中的字符集为新的字符集。

    3>确保记录不再更新,导出所有记录。

    mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-

    set=latin1 databasename > data.sql

    --quick: 该选项用于转储大的表。 它强制 mysqldump 从服务器一次一行地检索表中的行而不是 检

    索所有行,并在输出前将它缓存到内存中。

    --extended-insert: 使用包括几个 values 列表的多行insert语法,这样使转储文件更小,重载文件时

    可以加速插入。

    --no-create-info: 不写重新创建每个转储表的create table 语句。

    --default-character-set=latin1: 按照原有的字符集导出所有数据,这样导出的文件中,所有中文都是

    可见的,不会保存成乱码。

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

    5>使用新的字符集创建新的数据库。

    create database databasename default charset gbk;

    6>创建表,执行 createtab.sql

    mysql -uroot -p databasename < createtab.sql

    7>导入数据,执行data.sql

    mysql -uroot -p databasename < data.sql


    注意:选择字符集的时候,要注意最好是源字符的超级,或者确定比源字符集的字库更大,否则如果目标

    字符集的字库小于源字符集的字库,那么目标字符集中不支持的字符倒入后会变成乱码,丢失一部分数据。 例如 GBK字符集的字库大于GB2312字符集,那么GBK字符集的数据,如果导入GB2312数据库中,就会丢失GB2312中不支持的那部分汉字的数据。
  • 相关阅读:
    【ElasticSearch】异常错误
    【CentOS7】系统设置
    【Ubuntu 18.04.03_64】系统配置
    【MySql】语法学习
    【ElasticSearch】聚合使用学习
    【Spring Boot】Spring Security登陆异常出路
    【ElasticSearch】查询使用学习
    Spring boot X-Frame-Options 异常 a frame because it set 'X-Frame-Options' to 'deny'
    【Thymeleaf】使用学习
    【MySql】日期时间
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7170373.html
Copyright © 2011-2022 走看看