通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

news/2024/12/22 2:35:38/

通过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产品迁移到GreatSQLMySQL),更多功能的使用可以登录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.ppmy.cn/news/1536692.html

相关文章

滚雪球学Oracle[3.2讲]:查询与数据操作基础

全文目录: 前言一、复杂查询的优化:索引与查询重写1.1 使用索引优化查询索引的原理索引类型索引的使用场景案例演示:创建和使用索引 1.2 查询重写技术常见的查询重写方法 1.3 查询计划分析案例演示:使用EXPLAIN查看查询计划 二、D…

销售团队管理全面指南:从结构到流程

“除非卖出东西,否则就不能叫生意。” ——Thomas Watson的这段话表明,无论您经营哪个行业,销售都应该成为企业最重要的部分。您可能拥有出色的产品,但真正重要的是如何销售它。为此,您需要一支出色的销售团队&#xf…

书生大模型实战(从入门到进阶)L3-彩蛋岛-InternLM 1.8B 模型 Android 端侧部署实践

目录 1 环境准备 1.1 安装rust 1.2 安装Android Studio 1.3 设置环境变量 2 转换模型 2.1 安装mlc-llm 2.2 (可选)转换参数 2.3 (可选)生成配置 2.4 (可选)上传到huggingface 2.5 (可选) 测试转换的模型 3 打包运行 3.1 修改配置文件 3.2 运行打包命令 3.3 创建签…

gyp ERR node-gyp失败处理

当前版本: node v16.20.2 pnpm 8.14.3 npm 8.19.4 python失败 可以在微软的应用商店安装python node-gyp安装了和node一样的版本,然后失败 │ Building: C:\Program Files\nodejs\node.exe D:\data\work_code\data\xiangm\node_modules\.pnpm\node-gyp7.1.2\n… │ gyp inf…

在掌控板中加载人教版信息科技教学指南中的educore库

掌控板中加载educore库 人教信息科技数字资源平台(https://ebook.mypep.cn/free)中的《信息科技教学指南硬件编程代码说明》文件中提到“本程序说明主要供教学参考。需要可编程主控板须支持运行MicroPython 脚本程序。希望有更多的主控板在固件中支持ed…

C语言中的文件操作(二)

C语言中的文件操作&#xff08;一&#xff09;-CSDN博客https://blog.csdn.net/Xiaodao12345djs/article/details/142746010?spm1001.2014.3001.5501 四、文件的顺序读写 1、fputc (字符输出函数/写) 将一个字符写入文件中 #include <stdio.h>int main() {FILE* pf fo…

构建高效水果购物平台:SpringBoot飘香网站案例

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

docker compose入门2—docker-compose.yaml中的version表示什么意思

在 Docker Compose 中&#xff0c;version 字段用于指定 docker-compose.yml 文件的版本格式。不同版本定义了不同的功能和语法&#xff0c;因此 version 决定了你能够使用哪些特性和指令。 常见的 Compose 文件版本 Version 1: 不需要明确指定 version 字段。只支持最基础的功…