开发者社区> 问答> 正文

RDS需要将数据库从GBK转换成UTF8,请问怎么操作

RDS需要将数据库从GBK转换成UTF8,请问怎么操作?
谢谢!

展开
收起
dybccsy 2019-03-21 17:05:42 2830 0
5 条回答
写回答
取消 提交回答
  • 建议通过SQL来更改,如果库表比较多的话,可以通过以下方式批量生成更改字符集的SQL:
    1.生成转换表的sql
    select concat('alter table ', table_schema,'.',table_name,' convert to character set utf8mb4;') from information_schema.tables where table_schema in ('需要转换的数据库名')

    2.生成转换数据库的sql
    select concat('alter database ',SCHEMA_NAME,' CHARACTER SET = utf8mb4;') from information_schema.SCHEMATA where schema_name in ('需要转换的数据库名')

    2019-07-17 23:31:35
    赞同 展开评论 打赏
  • 2019-07-17 23:31:35
    赞同 展开评论 打赏
  • 1、使用mysqldump导出表结构,如:

          mysqldump -d -u root -p 数据库名 >/root/struct.sql

    2、使用mysqldump以特定编码导出数据(其中utf8为所需编码,可按需修改),如:

          mysqldump --default-character-set=utf8 -t -u root -p 数据库名 >/root/data.sql

    3、打开表结构转存(/root/struct.sql),将所有CREATE TABLE中的编码替换为所需编码
    4、导入数据到新表

    2019-07-17 23:31:35
    赞同 展开评论 打赏
  • 可以用SQL来修改。
    比如
    ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    2019-07-17 23:31:35
    赞同 展开评论 打赏
  • Zzz
    开发

    和MySQL类似:

    1. 如果是新表,创建Tabel的时候,设置DEFAULT CHARSET=utf8。
    2. 如果是已有数据的表,可以参考MySQL的方式,dump后在load,会有一定的停止服务时间。
    // 使用utf-8的格式导出表
    mysqldump --default-character-set=utf8 -t -u root -p $TABLE  > $SAVE_PATH/save.sql
    
    // 打开save.sql 文件,修改需要改的表结构字符集为utf-8
    
    // 导入新表(老表备份一下,并删除)
    mysql -u root -p < $SAVE_PATH/save.sql
    2019-07-17 23:31:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载

相关镜像