【YashanDB 知识库】字符集 latin1 的 MySQL 中文数据如何迁移到 YashanDB
本文内容来自 YashanDB 官网,原文内容请见 https://www.yashandb.com/newsinfo/7281317.html?templateId=1718516
问题
MySQL Server 字符集 latin1 的中文数据通过 YMP 23.2.1.3 遇到乱码问题
MySQL 中文正常

迁移到 YashanDB 的中文不正常

原因
MySQL Server 字符集 latin1,可以写入 UTF8 中文,导致存放的数据是 latin1 数据,但内容实际上是 utf8 编码。目前 YMP 23.2.1.3 还不支持字符集 latin1 的 MySQL 中文数据:
https://doc.yashandb.com/ymp/23.2/zh/版本说明/v23.2.html
YCM 只支持数据迁移支持的字符集为 GBK 和 UTF-8(MySQL 要求库、表、列、服务、系统、连接编码配置要一致),并要求源端数据库与目标数据库的字符集一致。因此迁移中文数据会遇到乱码问题。
解决方法
有两种方法:1)DBeaver 直接迁移 MySQL 库表到 YashanDB 库表;2)DBeaver 转换 MySQL 库表为 Insert 语句,然后插入到 YashanDB 库表。根据实际情况进行选择。
DBeaver 直接迁移 MySQL 库表到 YashanDB 库表
1、 导出数据

2、“导出目标”选择导出到“数据库表”

3、“表映射”选择迁移目标数据库 YashanDB

4、“抽取设置”使用默认值

5、“数据加载设置”选择“在加载前截断目标表”

6、最后“确认”并执行"proceed"

DBeaver 转换 MySQL 库表为 Insert 语句,然后插入到 YashanDB****库表
1、“导出目标”选择导出到“SQL”

2、“抽取设置”使用默认值

3、“格式设置”选择"每条数据的数据行数 - 1"

4、“输出”设置输出 SQL 文件所在目录

5、点击“确认”并执行"proceed"

6、调整生成的 SQL 文件中不兼容的语法,主要是 MySQL 的反引号

7、在 YashanDB 执行插入语句即可

局限性
仅适合单张表的迁移。如果迁移多张表,不建议采用上述方法。因为 DBeaver 不是专业的迁移工具,数据类型的兼容上处理不全面,容易遇到问题,建议对有问题的数据表单独迁移。
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/8beab893c4a3b139c30a60bdd】。文章转载请联系作者。
评论