通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

一、概述

MySQL Workbench 提供了可以将Microsoft SQL Server的表结构和数据迁移到 GreatSQL 的功能,此次将通过MySQL Workbench将SQL Server的数据迁移到GreatSQL。

本文章只是简单演示一下单张表的迁移,如果在项目中使用请根据实际情况进行调整。

二、风险评估

1.数据类型不匹配

两种数据库系统的数据类型可能不完全兼容。在迁移过程中,需要确保数据在不同类型之间的正确转换,否则可能导致数据丢失或不准确。

下表显示了Microsoft SQL Server(源)数据类型和GreatSQL数据类型之间的映射。

Microsoft SQL Server TypeGreatSQL TypeComment
INTINT
TINYINTTINYINTUNSIGNED flag set in MySQL.
SMALLINTSMALLINT
BIGINTBIGINT
BITTINYINT(1)
FLOATFLOATPrecision value is used for storage size in both.
REALFLOAT
NUMERICDECIMAL
DECIMALDECIMAL
MONEYDECIMAL
SMALLMONEYDECIMAL
CHARCHAR/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have CHAR columns with a length up to 255 characters. Anything larger is migrated as LONGTEXT.
NCHARCHAR/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type.
VARCHARVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types.
NVARCHARVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type.
DATEDATE
DATETIMEDATETIME
DATETIME2DATETIMEDate range in MySQL is '1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'. Note: fractional second values are only stored as of MySQL Server 5.6.4 and higher.
SMALLDATETIMEDATETIME
DATETIMEOFFSETDATETIME
TIMETIME
TIMESTAMPTIMESTAMP
ROWVERSIONTIMESTAMP
BINARYBINARY/MEDIUMBLOB/LONGBLOBDepending on its length.
VARBINARYVARBINARY/MEDIUMBLOB/LONGBLOBDepending on its length.
TEXTVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length.
NTEXTVARCHAR/MEDIUMTEXT/LONGTEXTDepending on its length.
IMAGETINYBLOB/MEDIUMBLOB/LONGBLOBDepending on its length.
SQL_VARIANTnot migratedThere is not specific support for this data type.
TABLEnot migratedThere is not specific support for this data type.
HIERARCHYIDnot migratedThere is not specific support for this data type.
UNIQUEIDENTIFIERVARCHAR(64)A unique flag set in MySQL. There is not specific support for inserting unique identifier values.
SYSNAMEVARCHAR(160)
XMLTEXT

2.语法和功能差异

SQL Server 和 GreatSQL 在语法、数据类型、函数、存储过程等方面存在一定的差异。某些在 SQL Server 中使用的语法和功能可能在 GreatSQL 中不支持,或者需要进行修改和调整。

例如,复杂的存储过程、触发器、视图等可能需要重新编写或修改以适应GreatSQL 的语法和规则。

3.应用程序兼容性

如果有依赖于原始数据库的应用程序,迁移后可能需要对应用程序进行修改和测试,以确保其与GreatSQL 数据库正常交互。

4.数据迁移过程中的错

在数据迁移过程中,可能会出现数据丢失、损坏或不一致的情况。需要进行充分的测试和验证,以确保数据的完整性和准确性。

5.性能差异

GreatSQL 和 SQL Server 的性能特点不同。例如,索引的使用、查询优化器的工作方式等可能存在差异。迁移后需要重新评估和优化SQL,以确保在 GreatSQL 环境中获得良好的性能。

三、环境说明

1.源端Microsoft SQL Server

版本IP端口
Microsoft SQL Server 2017192.168.140.601433

2.目标端GreatSQL

版本IP端口
GreatSQL-8.0.32192.168.140.605000

四、数据库安装

1.安装Microsoft SQLServer环境

略,参考文档:Datax助力轻松迁移SQLServer数据至GreatSQL

2.安装GreatSQL环境

略,参考文档:二进制包安装 | GreatSQL用户手册

https://greatsql.cn/docs/8.0.32-25/4-install-guide/3-install-with-tarball.html

3.安装MySQL workbench

3.1 下载

下载地址:https://dev.mysql.com/downloads/workbench/

file

3.2 安装

双击安装,一直点 Next 即可

file

五、Microsoft SQL Server 创建测试数据

1.连接数据库

$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P'xxx'

2.创建测试数据

3> CREATE DATABASE test2024;
4> go
5> use test2024
6> go
Changed database context to 'test2024'.
1> CREATE TABLE t1 (id int,name varchar(30))
2> go
1> 
2> INSERT INTO t1 VALUES (1,'a'),(2,'b'),(3,'c')
3> go

(3 rows affected)
1> SELECT * FROM t1
2> go
id          name                          
----------- ------------------------------
          1 a                             
          2 b                             
          3 c                             

(3 rows affected)

配置数据迁移

1.启动迁移功能

双击打开MySQL workbench,点击数据迁移功能,再点击开始迁移按钮

file

file

2.配置源端/目标端

2.1 源端选择 Microsoft SQL Server

file

需要安装SQL Server驱动:Download Microsoft® SQL Server® 2012 Native Client - QFE from Official Microsoft Download Center

下载完成后,双击安装包点下一步即可

2.2 目标端默认为MySQL

file

配置完成后,点击 Next

3.获取源端schema列表

file

点击 Next 即可

4.选择要迁移的schema

file

保持默认配置即可(3个选项与目标端库表名映射有关),点击 Next

5.逆向工程

file

这是一个自动化的信息步骤,用于报告相关错误、常规日志信息或两者。点击 Next 进行下一步

6.选择迁移对象

可以在下面的列表选择要迁移的对象,默认是迁移第4步中选择的schema下的所有表

file

选择要迁移的对象,点击 Next

7.迁移

将SQL Server对象 自动转换为MySQL兼容对象,将使用默认数据类型和默认列值映射。

file

点击下一步即可

8.手动编辑

查看和编辑迁移对象,可以在它们被应用到目标数据库之前进行编辑

file

Migration Problems: 这将报告问题或显示“未找到映射问题”。

All Objects:一个对象视图,用于查看和编辑对象定义。双击一行以修改目标对象的名称。

Column Mappings:显示所有表列映射,并允许您单独查看和修复所有列类型、默认值和其他属性的映射。

9.目标端创建选项

可以选择在目标端数据库创建对象、或者生成创建SQL的脚本文件或两者都可以选择。

file

点击 Next 进行下一步

10.创建schema

在目标端正式创建对象

file

11.目标端创建结果

file

这里列出了生成的对象,以及错误消息(如果存在)。

也可以在此处查看和编辑迁移代码。若要进行更改,请选择一个对象,编辑查询SQL语句,然后单击“Apply”。

对每个要编辑的对象重复此过程。最后,单击“Recreate Objects”以保存结果。

12.数据传输设置

file

Online copy of table data to target RDBMS:此方法(默认)将数据复制到目标端数据库。

Create a batch file to copy the data at another time:数据也可以转储到一个稍后可以执行的文件中,或者用作备份。此脚本使用MySQL连接来传输数据。

Create a shell script to use native server dump and load abilities for fast migration:与执行实时在线复制的简单批处理文件不同,这会生成一个要在源主机上执行的脚本,然后生成一个Zip文件,其中包含在目标主机上本地迁移数据所需的所有数据和信息。复制并提取目标主机上生成的Zip文件,然后执行导入脚本(在目标主机上),使用LOAD data命令将数据导入MySQL。

13.批量数传输

file

根据上一步所选的选项,进行数据传输

14.迁移报告

数据迁移完成后,会自动生成报告,总结了整个迁移过程

file

七、目标端GreatSQL查询数据

登录GreatSQL查询数据

greatsql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| adm                |
| das                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| sys_audit          |
| test2024           |
+--------------------+
8 rows in set (0.00 sec)

greatsql> SELECT * FROM test2024.t1;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
|    3 | c    |
+------+------+
3 rows in set (0.00 sec)

总结

MySQL workbench 支持从某些特定 RDBMS产品迁移到GreatSQL(MySQL),更多功能的使用可以登录MySQL官网进行查看。

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/888664.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】每日一题 2024_10_8 旅行终点站(哈希)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 国庆结束了 . . . 力扣的每日一题也来到了终点站 题目:旅行终点站 代码与解题思路 func destCity(paths [][]string) string { // 国庆结束,旅途到了终点// 今天这道题算是一个小…

【LeetCode: 1870. 准时到达的列车最小时速 | 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

看门狗电路设计

看门狗电路设计 看门狗是什么应用架构图TPV6823芯片功能硬件时序图为什么要一般是要保持200个毫秒左右的这种低电平的时间看门狗电路实际应用与条件 看门狗是什么 硬件看门狗芯片,Watch DogTimer,可用于受到电气噪音、电源故障、静电放电等影响(造成软件…

“炫我”受邀出席虚拟现实及元宇宙产业创新论坛!

当前,新一轮科技革命和产业变革向纵深演进,虚拟现实及元宇宙等相关产业加速发展,催生了新产业新业态新模式,发展潜力巨大、应用前景广阔。 9月27日,由北京市科学技术委员会、中关村科技园区管理委员会,北京…

JavaScript 访问者模式:打造高扩展性的对象结构

一. 前言 在面向对象编程中,访问者模式(Visitor Pattern)是一种行为设计模式,它允许我们向现有的类结构添加新的操作,而无需修改这些类。这对于需要对类层次结构中的元素进行复杂算法处理的场景非常有用。 本文将详细…

【AI绘画SD教程】Lineart线稿上色和IP-Adapter 人像写真插件实操教学,轻松助你生成多种风格的AI人像大片!SD零基础入门到精通教程

大家好,我是画画的小强 今天给大家分享一下如何用AI绘画工具StableDiffusion当中的 LineArt线稿处理 和 IP-Adapter 实操教学。 本期教程开始之前,请先确保你的电脑已经安装好StableDiffusion这款AI绘图工具,如你还没有安装使用&#xff0c…

最新价值5000元的V2M2引擎传奇源码2024BLUE升级版 团购

最新团购的V2M2引擎源码2024年BLUE升级版 特点优势是最新XE12编辑器,微端,各种自定义UI 无限仿GOM引擎功能 参考地址:最新价值5000元的V2M2引擎传奇源码2024BLUE升级版[原始团购版]_1234FCOM专注游戏工具及源码例子分享下载地址:BlueCodePXL…

适合技术小白入门 AI 编程的六个场景

前言 AI 编程最近特别热闹。 自媒体文章说它很强大,确实身边也会看到技术小白用它做出酷炫作品,令人艳羡。 但你自己用时却常遇到坑,找技术朋友一问听到的回答是“AI 干不了这个、铁定会把你带沟里去”。 谁说得对?技术小白到底能…

Linux——磁盘分区、挂载

Linux 分区 原理介绍 原理图如下 当我们在/home目录下新建一个文件a.txt时,该文件实际上是存放在硬盘B的分区1中的,这就是图里说的,当进入某个目录,可以进入到该目录下挂载的分区里的意思 硬盘说明 应用实例:挂载一个…

Linux的六个入侵检查思路及预防

背景 入侵检查是保障计算机安全运行的重要手段之一, 通过操作系统的静态配置分析、日志分析、异常行为分析以及文件完整性等方式来做检查,来判断我们的操作系统是否有受到入侵。今天阿祥就介绍十个简单的入侵检查思路及应对措施,希望对大家有…

基于JavaWeb开发的java springmvc+mybatis学生考试系统设计和实现

基于JavaWeb开发的java springmvcmybatis学生考试系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各…

45岁被裁员的程序员,何去何从?

在当今快速变化的技术行业,职业生涯的稳定性受到挑战。在45岁被裁员,对很多程序员来说,可能是一种惊慌失措的体验。然而,这个阶段也可以被视为一个重新审视和调整方向的机会。本文将对可能的出路进行全方位的分析,并提…

音视频入门基础:FLV专题(9)——Script Tag简介

一、SCRIPTDATA 根据《video_file_format_spec_v10_1.pdf》第75页到76页,如果某个Tag的Tag header中的TagType值为18,表示该Tag为Script Tag(脚本Tag,又称Data Tag、SCRIPTDATA tag)。这时如果Filter的值不为1表示未加…

蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC

蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC 第一节 硬件解读第二节 CubeMX配置第三节 代码编写 第一节 硬件解读 STM32的ADC是12位,通过硬件过采样扩展到16位,模数转换器嵌入到STM32L071xx器件中。有16个外部通道和2个内部通道&#xf…

Docker学习和部署ry项目

文章目录 停止Docker重启设置开机自启执行docker ps命令,如果不报错,说明安装启动成功2.然后查看数据卷结果3.查看数据卷详情结果4.查看/var/lib/docker/volumes/html/_data目录可以看到与nginx的html目录内容一样,结果如下:5.进入…

Flink源码剖析

写在前面 最近一段时间都没有更新博客了,原因有点离谱,在实现flink的两阶段提交的时候,每次执行自定义的notifyCheckpointComplete时候,好像就会停止消费数据,完成notifyComplete后再消费数据;基于上述原因…

kubernetes 中的微服务

微服务:用控制器来完成集群的工作负载,那么应用如何暴漏出去?需要通过微服务暴漏出去后才能被访问 - Service是一组提供相同服务的Pod对外开放的接口。 - 借助Service,应用可以实现服务发现和负载均衡。 - service默认只支持…

带隙基准Bandgap电路学习(一)

一、原理图 Bandgap中的运放(折叠式Cascode)采用P输入对,是因为运放输入端接的PNP三极管发射极端的电位,电压小,为了确保输入对管能够饱和工作,故采用P输入对管。此外,P管作为输入管&#xff0c…

【HTTPS】深入解析 https

我的主页:2的n次方_ 1. 背景介绍 在使用 http 协议的时候是不安全的,可能会出现运营商劫持等安全问题,运营商通过劫持 http 流量,篡改返回的网页内容,例如广告业务,可能会通过 Referer 字段 来统计是…

springboot医院预约挂号系统

基于springbootvue实现的医院预约挂号系统 (源码L文ppt)4-085 4.1系统功能模块设计 医院预约挂号系统与数据分析系统在设计与实施时,采取了模块性的设计理念,把相似的系统的功能整合到一个模组中,以增强内部的功能…