通过navicat完成sqlserver迁移数据到mysql

avatar 2021年09月30日15:17:53 0 89 views

最近要把一个项目的老系统的sqlserver库迁移到新系统的mysql库,工作量着实很大。

我们需要整理出新旧表的字段区别,同步旧库数据到新库,然后通过代码做一些初始化操作(比如给新增字段设置默认值,设置关联值)。

新系统的库里的表是重新设计,80%的表是原来老系统都有的,但是大部分表都新增了公公共一些字段(如del_flag、update_time, update_id等),不同的表可能还会新增一些业务字段。

下面介绍一下使用navicat数据迁移的思路。

说明一下,目前新库和老库都是存在的,新库是已经开发设计好的,需要将老库数据迁到新库

navicat数据传输功能必须用同一个类型的数据库,结构同步则不限制

数据迁移可以使用一些开源工具如kettle,这里不用,只用navicat实现

一、将sqlserver库数据原封不动传输到mysql临时库

这里并不是直接转,而是新建一个mysql临时库,然后通过navicat的工具数据传输将sqlserver库同步到mysql新库。

所有表和所有数据都同步到新库,这个数据传输工具是不区分数据库类型的,不同的数据库都可以传过来。

左边是sqlserver连接,右边是mysql连接

可以选择指定的要传输的表,我这里用4张表演示

二、结构对比,分析出新库较老库新增和删除字段

使用navicat工具,结构同步,来看新库多了哪些字段,或者少了哪些字段

注意,我们这里只是对比,不要进行同步哦

然后可以判断出新增和减少了哪些表,每个表新增和减少了哪些字段

三、mysql临时库数据传输数据到目标库

对比出结果后,我们可以整理一份文档,留着后面使用

现在我们可以先把老库的mysql版本数据传输到新库

使用navicat的数据传输功能操作,这里就不贴图了

 

四、对新增字段设置初始值

很多新增字段,如一些冗余字段(为了提升查询性能),一些业务字段需要通过一些查询再设置值的

这些我们都可以使用2种办法。

1、在传输数据后,再执行一个sql脚本去update表set值

2、通过代码,查询出某个表所有数据,然后进行set值

两者是互相配合的,当然能用sql脚本直接上最好,需要靠代码计算或者调用微服务系统去获取值的才使用代码执行,

使用代码设置初始值需要考虑执行的顺序,比如a表依赖b表的值,需要先初始化b表的值再去操作a表,可以写一个调用链路去做

 

 

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0