searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Mysql 数据库向OpenGauss数据库迁移实践

2024-03-15 01:13:37
55
0

基于项目的需要,数据库需要使用OpenGauss。项目原来使用的是Mysql数据库,由于项目中有上千张表,不能一个个的手动创建,需要通过工具批量迁移。这里,我选择的工具是Navicat。

一. 工具选择及使用

在Navicat中选择工具->数据传输

填写数据库连接配置

二. 遇到的问题及解决方案

传输过程是一批一批进行的,比如10个或者20个表

1.  数据类型报错,bit, json

    有一些字段是bit或者json类型,navicat在执行过程中会报错,显示不支持的类型。我使用的方法是,把bit类型先转换成int类型,json类型换成为varchar类型,等传输完再手动改回来。

2. 外键约束

    由于传输过程一批一批进行,难免存在外键导致表创建失败或者无法删除的情况。这里我先批量把外键删除。通过以下sql查询出所有外键信息:

   SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = 'table_name';

   然后再批量删除外键

3. 索引重名

   在Mysql里表和表之间索引名可以一样,但在OpenGuass是不可以重复的,所以我把索引名提前改成了 表名+字段名的方法,防止索引很重名。

 

知道了以上几种问题的解决方法,批量表迁移还是很快的,顺利的话一天完成500+个表还是没有问题的。当然,有了以上经验,后续在创建表的时候就应该规避这些问题。

  

0条评论
0 / 1000
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
原创

Mysql 数据库向OpenGauss数据库迁移实践

2024-03-15 01:13:37
55
0

基于项目的需要,数据库需要使用OpenGauss。项目原来使用的是Mysql数据库,由于项目中有上千张表,不能一个个的手动创建,需要通过工具批量迁移。这里,我选择的工具是Navicat。

一. 工具选择及使用

在Navicat中选择工具->数据传输

填写数据库连接配置

二. 遇到的问题及解决方案

传输过程是一批一批进行的,比如10个或者20个表

1.  数据类型报错,bit, json

    有一些字段是bit或者json类型,navicat在执行过程中会报错,显示不支持的类型。我使用的方法是,把bit类型先转换成int类型,json类型换成为varchar类型,等传输完再手动改回来。

2. 外键约束

    由于传输过程一批一批进行,难免存在外键导致表创建失败或者无法删除的情况。这里我先批量把外键删除。通过以下sql查询出所有外键信息:

   SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = 'table_name';

   然后再批量删除外键

3. 索引重名

   在Mysql里表和表之间索引名可以一样,但在OpenGuass是不可以重复的,所以我把索引名提前改成了 表名+字段名的方法,防止索引很重名。

 

知道了以上几种问题的解决方法,批量表迁移还是很快的,顺利的话一天完成500+个表还是没有问题的。当然,有了以上经验,后续在创建表的时候就应该规避这些问题。

  

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0