众所周知,Microsoft SQL Server (MS SQL)和MySQL是最常用的关系数据库管理系统(rdbms)。
但是MS SQL是来自微软的专有RDBMS, MySQL是由Oracle支持的免费开源RDBMS。随着越来越多的组织从私有软件过渡到开源软件,从MS SQL数据库迁移到MySQL数据库的势头越来越大。
为什么迁移?
有几个原因,你可能想要考虑从MS SQL Server数据库迁移到MySQL数据库,例如:
- 降低成本:与MS SQL相比,迁移到MySQL通常需要更低的成本。虽然,有一个免费的MS SQL Server的副本称为Express在网上可用,但它有一定的局限性。例如,它只能寻址最多1gb的RAM,并对数据库施加最多10gb的限制。因此,你需要支付SQL Server授权版用于生产部署。但是,您可以免费使用MySQL社区版,没有这些限制
- 支持的主要操作系统和平台:与MS SQL不同,MySQL在所有主要的操作系统和平台组合上高效运行,包括Windows、Linux和Solaris。
- 安装和配置:MySQL的下载和安装通常需要15分钟或更少的时间。为了使Windows用户更容易地安装和配置过程,Oracle提供了MySQL安装程序。使用MySQL安装程序,您可以在3分钟内快速安装和配置MySQL产品。
- 灵活性:SQL Server使用单一存储引擎。但是,MySQL为开发人员提供了很大的灵活性,可以为不同的表类型选择不同的存储引擎。
此外,MySQL授权版- MySQL企业版的总拥有成本(TCO)比MS SQL Server企业版要低得多。
不管是什么原因,数据库迁移都不能掉以轻心,特别是当你考虑手动迁移MS SQL到MySQL数据库时。如果没有仔细计划,手动数据库迁移过程可能会很麻烦。
在本博客中,我们将讨论执行Microsoft SQL Server数据库到MySQL数据库的手动迁移过程。但是在继续之前,让我们首先评估一下在迁移过程中需要特别注意的“数据类型”。
数据类型
MySQL支持所有重要的MS SQL数据类型。但是,有些SQL server数据类型与MySQL数据类型不匹配。你需要映射MySQL的一些主要数据类型如下:
SQL Server | MySQL |
VARCHAR(马克斯 | 量变 |
SQL_VARIANT | 团 |
身份 | AUTO_INCREMENT |
Ntext,国家文本 | 文本字符集utf8 |
SMALLDATETIME | DATETIME |
DATETIMEOFFSET | 时间戳 |
钱 | 小数(4) |
UNIQUEIDENTIFIER | 二进制(16) |
SYSNAME | CHAR (256) |
如何手动迁移MSSQL服务器到MySQL数据库?
数据库迁移是一个多阶段的过程,但在本博客中,我们将讨论从MS SQL Server手动迁移到MySQL数据库的两个主要步骤。
步骤1:数据库模式转换模式是数据库结构的可视化表示。在将数据从一个系统迁移到另一个系统时,您需要转换模式,以便源数据库结构与目标数据库协同工作。
注:- 为了将MS SQL数据库表的模式移动或复制到MySQL中,您必须映射数据类型,查找NULL约束,并确定设置为PRIMARY KEY的字段。
- 此过程不支持索引、外键、标识列、唯一或其他表约束以及字符集的转换。
为了理解模式转换的过程,让我们用一个名为“Table_1”的新表创建一个示例数据库。为此,打开SQL Server迁移助手(SSMA)并输入以下代码片段:
创建数据库[示例]
去
使用(样本)
去
CREATE SCHEMA [prd] AUTHORIZATION [dbo]
去
CREATE TABLE [prd].[Table_1]
(
[column1] [int] NOT NULL,
[column2] (char)(10)为空,
[column3] [nchar)(10)为空,
[column4] [nvarchar](50)为空,
[column5] [varchar](50)为空,
约束[PK_Table_1]主键已聚集
([column n1] ASC)ON [PRIMARY])ON [PRIMARY]
去
接下来,您需要通过将转换后的模式应用到目标数据库实例,在物理上创建数据库对象。为此,在mysql客户端程序中运行CREATE TABLE语句在mysql服务器上创建一个表。要做到这一点,请遵循以下步骤:
- 在您的系统上安装并运行MySQL Workbench。
- 安装MySQL Workbench并在Workbench和目标MySQL服务器之间建立了连接之后,单击本地实例MySQL57(如下面的截图所示):
- 出现提示时,输入密码连接到MySQL服务器,然后单击OK。
- 在本地实例MySQL57窗口中,单击SQL并输入以下代码片段:
创建数据库样本;
使用样本;
创建表prdTable_1
(column1 int(11) NOT NULL,
column2 char(10)
CHARACTER SET utf8默认NULL,
column4 varchar(50) CHARACTER SET utf8 DEFAULT NULL,
column5 varchar(50)默认NULL,
主键(columnn1)
);
模式转换过程完成后,需要移动数据。
下面是一个例子,其中prd模式中的Table_1表被手动插入到“MySQL工作台本地实例”中:
INSERT INTO prdtable_1(column1,column2,column3,column4,column5)
值(5“恒星”,“数据”,“恢复”,“SQL”);
去
虽然手动迁移一个数据库到另一个数据库可以让您完全控制迁移过程,但它有一定的限制,例如:
- 手动转换具有数千个对象属性的数据库可能非常耗时。
- 移动大量数据涉及数据丢失的风险。
- 对于新手来说,这可能是一项艰巨而富有挑战性的任务。
迁移MS SQL到MySQL的最佳方式
最好的方法是通过使用专门的数据库转换工具自动将MS SQL转换为MySQL数据库用于数据库的恒星转换器。该软件支持数据库迁移,允许离线转换数据库记录和属性,以一种简单和无麻烦的方式。
从本质上说,转换工具帮助管理员和用户在编写复杂的查询时节省时间和精力,将MS SQL数据库文件移动到MySQL数据库文件格式。
关键特性- 帮助转换MS SQL (.mdf), MySQL, SQLite (.db和.sqlite) & SQL Anywhere (.db)文件
- 允许转换单个或多个数据库表
- 允许处理大型数据库
- 维护数据库记录的数据完整性
将数据从MS SQL转换为MySQL使用用于数据库的恒星转换器如下:
1.检查前提条件
- MySQL必须安装在默认配置的系统上。
- ibdata文件的存放位置必须与MySQL数据库相同。
- 用于存储MS SQL server数据的驱动器必须有与MySQL数据库大小相等的剩余空间。
一旦满足了先决条件,就可以下载并安装软件。软件安装的详细信息请参见用于数据库安装指南的恒星转换器。
2.选择源数据库
从软件主界面,进入选择数据库窗口中,选择MS SQL作为源数据库类型。接下来,单击浏览或搜索下数据库路径选择要转换的数据库。然后,点击扫描。
3.检查可转换对象的预览
一旦扫描完成,该软件将提供对象的预览,可以转换为MySQL数据库格式。
4.转换和保存目标数据库中的数据
从预览窗口中选择要转换的对象,然后单击“在文件上转换”菜单。在转换和保存数据库窗口中,选择MySQL下选择“数据库类型”。填写连接到服务器详细信息,然后单击Save。
所选数据库将被成功转换。
结论组织可能需要从MS SQL server迁移到MySQL,因为其丰富的功能集,跨平台和开源可用性,以及较低的成本。
虽然可以手动执行从一个数据库到另一个数据库的迁移,但这可能是一个非常耗时且容易出错的过程。
一个更好的选择是使用专门的数据库转换软件,如Stellar converter for database,它是专门设计来帮助dba和开发人员将一种数据库文件格式转换为另一种格式的过程自动化的。该软件将表记录和属性从MS SQL快速转换为MySQL数据库,同时保持数据库的完整性。
问:我应该使用哪个版本的MySQL ?
答:您可以使用最新的MySQL 8。X(或更低的版本)。
问:我可以在同一台机器上运行MySQL和SQL Server吗?
答:是的,您可以在同一台机器上运行MySQL和SQL Server。
问:我可以离线从MS SQL Server迁移到MySQL吗?
答:是的,有了Stellar Converter for Database,您可以将MS SQL Server数据库离线模式转移到MySQL。
问:我是否需要安装MS SQL和MySQL来检查可以转换的数据库对象的预览?
答:不,有了Stellar Converter for Database,你可以预览所有的数据库对象,可以在没有MS SQL和MySQL安装的情况下转换。