通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

news/2024/10/9 14:02:37/文章来源:https://www.cnblogs.com/greatsql/p/18454089

通过MySQL Workbench 将 SQL Server 迁移到GreatSQL

一、概述

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

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

二、风险评估

1.数据类型不匹配

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

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

Microsoft SQL Server Type GreatSQL Type Comment
INT INT
TINYINT TINYINT UNSIGNED flag set in MySQL.
SMALLINT SMALLINT
BIGINT BIGINT
BIT TINYINT(1)
FLOAT FLOAT Precision value is used for storage size in both.
REAL FLOAT
NUMERIC DECIMAL
DECIMAL DECIMAL
MONEY DECIMAL
SMALLMONEY DECIMAL
CHAR CHAR/LONGTEXT Depending 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.
NCHAR CHAR/LONGTEXT Depending 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.
VARCHAR VARCHAR/MEDIUMTEXT/LONGTEXT Depending 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.
NVARCHAR VARCHAR/MEDIUMTEXT/LONGTEXT Depending 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.
DATE DATE
DATETIME DATETIME
DATETIME2 DATETIME Date 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.
SMALLDATETIME DATETIME
DATETIMEOFFSET DATETIME
TIME TIME
TIMESTAMP TIMESTAMP
ROWVERSION TIMESTAMP
BINARY BINARY/MEDIUMBLOB/LONGBLOB Depending on its length.
VARBINARY VARBINARY/MEDIUMBLOB/LONGBLOB Depending on its length.
TEXT VARCHAR/MEDIUMTEXT/LONGTEXT Depending on its length.
NTEXT VARCHAR/MEDIUMTEXT/LONGTEXT Depending on its length.
IMAGE TINYBLOB/MEDIUMBLOB/LONGBLOB Depending on its length.
SQL_VARIANT not migrated There is not specific support for this data type.
TABLE not migrated There is not specific support for this data type.
HIERARCHYID not migrated There is not specific support for this data type.
UNIQUEIDENTIFIER VARCHAR(64) A unique flag set in MySQL. There is not specific support for inserting unique identifier values.
SYSNAME VARCHAR(160)
XML TEXT

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 2017 192.168.140.60 1433

2.目标端GreatSQL

版本 IP 端口
GreatSQL-8.0.32 192.168.140.60 5000

四、数据库安装

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社区:

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

image-20230105161905827

技术交流群:

微信:扫码添加GreatSQL社区助手微信好友,发送验证信息加群

image-20221030163217640

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的第一个博客

我的第一个博客我的第一个博客 CBV添加装饰器的三种方式 # CBV添加装饰器 from django.views import View # 需要先导入method_decorator from django.utils.decorators import method_decorator # CBV中django不建议直接给类的方法加装饰器# @method_decorator(login_auth, na…

我店生活模式功能分析

一、平台概述 “我店”由上海我店科技网络有限公司创立于2021年8月,作为一个本地生活服务平台,它致力于响应国家的环保政策,并运用绿色积分来促进经济活动,帮助实体店铺吸引客流。面对实体商业的挑战,“我店”平台凭借其独特的商业模式,为商户与顾客提供了新的合作与发展…

AI即服务平台的优势

AI即服务平台以其降低成本、加速创新、提升效率、增强安全性及促进普惠化等多方面的优势,正在深刻改变企业运营模式和市场竞争格局。当今,企业为了提升竞争力、优化运营流程、增强用户体验,纷纷探索AI技术的应用。然而,AI技术的复杂性和高昂的研发成本往往成为中小企业和初…

易基因: Nat Commun:中南大学曾朝阳/熊炜/龚朝建团队利用ChIP-seq等揭示头颈鳞癌免疫逃逸机制|项目文章

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 免疫逃逸是癌症进展的关键里程碑,是肿瘤免疫治疗的理论基础。头颈部鳞状细胞癌((head and neck squamous cell carcinoma, HNSCC))是全球最常见的恶性肿瘤之一,传统治疗选择包括手术切除、放疗和化疗。最近…

20222407 2024-2025-1《网络与系统攻防技术》实验一实验报告

1.实验内容 1.1本周学习内容 1.1.1缓冲区溢出的定义和原因 定义:写入缓冲区的数据量超过该缓冲区能容纳的最大限度,造成溢出的数据改写了与该缓冲区相邻的原始数据的情形。 原因:(直接)由于代码语言的设计问题、程序员的安全意识问题,程序没有严格的内存越界检查;(根本…

揭秘!尤雨溪成立的VoidZero如何改变前端世界

Vue和Vite之父尤雨溪宣布成立公司 VoidZero,目前已经融资3200万。这篇文章欧阳将带你了解VoidZero是如何改变javascript的世界!前言 Vue和Vite之父尤雨溪宣布成立公司 VoidZero,目前已经融资3200万。这篇文章欧阳将带你了解VoidZero是如何改变javascript的世界! 关注公众号…

20222314 2024-2025-1 《网络与系统攻防技术》实验一实验报告

网络攻防实验报告姓名:陈振烨学号:20222314实验日期:2024/09/29 — 2024/10/09实验名称:缓冲区溢出和shellcode 指导教师:王志强实验要求:1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分)2.掌握反汇编与十六进制编程器 (0.5分)3.能正确修改机器指令改变程序执行流…

最基本必会的增删改查

本文详细介绍了SQL中的四大基本操作:INSERT用于数据插入,DELETE用于数据删除,UPDATE用于更新数据,SELECT用于查询数据。文中还涵盖了WHERE条件查询,LIKE用于模糊查询,ORDERBY进行排序,LIMIT用于分页查询,以及聚合函数如COUNT(),SUM(),AVG()和MAX()。这些是数据库管理的…

macos安装gemini

macos运行步骤 1.下载gemini 2.给gemini权限sh-3.2# chmod +x gemini-darwin-amd64sh-3.2# ./gemini-darwin-amd64 这个时候需要在mac的隐私设置出进行允许 启动台--》系统偏好--》 再次sudo执行少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一把吧 我的最近更…

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

“除非卖出东西,否则就不能叫生意。” ——Thomas Watson的这段话表明,无论您经营哪个行业,销售都应该成为企业最重要的部分。您可能拥有出色的产品,但真正重要的是如何销售它。为此,您需要一支出色的销售团队,并让他们在一个良好的管理体系(流程体系)下发挥作用。 一、…

SonarQube的安装与使用

SonarQube的安装与使用一、说明: SonarQube 7.8以上只支持jdk 11版本并且不支持mysql数据库 本次安装为Windows环境 版本信息如下: 1、sonarqube — 7.7 2、Sonar-scanner-cli —4.5.0 3、Postgre —10.1二、解压附件中的sonarqube-7.7.zip,sonar-sca…

Sealos Devbox 发布,珍爱生命,远离 CI/CD

水滴攻击太阳系用的是最原始的攻击方式:撞击!却又如此有效率。 当我们搞了一堆容器、编排、CI/CD、DevOps,发明了一大堆没什么用的名词之后,最终发现这些操作都是花里胡哨,让开发者越陷越深。 最终你会发现一个真理:原来十年前、二十年前的线上直接改代码是效率最高的方式…