本次通过SQLyog软件将SQL Server数据库数据迁移至MySQL中

服务端:SQL Server 2016 / MySql 5.7.26

客户端:webyog SQLyog 

迁移对象:数据表的结构、数据,视图,存储过程

迁移过程:

  1. 在SQL SERVER和MYSQL中各自配置好对应数据库的用户及密码,MYSQL新建目标数据库,另外,因为源数据库的字符集为Chinese_PRC_CI_AS且数据中包含中文内容,为了避免迁移出现乱码,在SQLyog中右键已经建立好的数据库---【改变数据库】---调整字符集。
  2. 打开SQLyog软件,导入外部数据
  3. 开始一个新任务,next
  4. 新建DSN文件,数据源类型为文件数据源,驱动选择ODBC Driver 17 for SQL Server,并指定保存位置与文件名。
  5. 在导入向导页面填写数据源的用户名和密码,下一步,设定数据源服务器IP地址及登录方式,选择要迁移的数据库,NEXT从数据源复制表
  6. 选择待迁移的表、视图等,建议表、视图、存储过程分开处理,不要一次性转换。
  7. 注意:开始迁移前必须检查和修正待转移表中所有数据类型为bit和timestamp的字段,并将其映射修改为tinyint和datetime(sql原先表中的datime类型在SQLyog中会自动变为timestamp类型,全部都得检查修改)

           如果涉及的表和字段比较少,可以点击表后面的【map】栏中【...】,打开弹窗后,修改对应字段的Type列;
           如果涉及的表及字段比较多,那么上面的方法太慢,可以在配置完后不要着急迁移,先保存任务为文件,从资源管理器打开该文件,使用文本编辑器将bit批量替换为tinyint,timestamp批量替换为datetime,保存文档。
  8. 重新打开导入外部数据向导,选择上步保存的任务文件,NETX直到开始转换。
  9. 转换过程较慢,需要耐心等待,注意保持计算机不要进入睡眠状态,直到窗口显示【Total time taken -xxxx sec】,转换完成。
  10. 参考:我本次迁移的数据表193个,共计685万多行,用时9069秒(约2.5小时),数据平稳迁移,经校验数据完整没有出错。
  11. 视图的导入:SSMS中右键数据库,【任务】-【生成脚本】先生成脚本,去除多余的
    USE [NJDB2]
    GO
    /****** Object:  View [dbo].[v1_BarcodeB]    Script Date: 05/23/2023 17:03:30 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    代码,再批量矫正一下[库名].[表名] 中的[]符号替换为单引号,每一段的最后加一个分号,复制出来在SQLyog中执行就可将所有视图导入了。
  12. DAC连接后解密存储过程(如果你加密了),参考上一步导出存储过程。

更多推荐