众所周知,Microsoft SQL Server (MS SQL)和MySQL是最常用的关系数据库管理系统(rdbms)。
但是,MS SQL是微软的专有RDBMS,而MySQL是由甲骨文支持的免费开源RDBMS。随着越来越多的组织从专有软件过渡到开源软件,从MS SQL迁移到MySQL数据库的势头越来越大。
为什么迁移?
有几个原因,你可能想要考虑从MS SQL Server数据库转移到MySQL数据库,例如:
- 降低成本:与MS SQL相比,迁移到MySQL通常涉及更低的成本。虽然,网上有一个免费的MS SQL Server Express,但它有一定的局限性。例如,它只能寻址最多1 GB的RAM,并强加了最多10 GB的数据库限制。因此,你需要支付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]
(
[columnn1] [int] NOT NULL
[column2] (char)(10)为空,
[column3] [nchar)(10)为空,
[column4] [nvarchar](50)为空,
[column5] [varchar](50)为空,
约束[PK_Table_1]主键已群集
([column1] ASC)ON [PRIMARY])ON [PRIMARY]
去
接下来,您需要通过将转换后的模式应用到目标数据库实例来物理地创建数据库对象。为此,在mysql客户端程序中运行CREATE TABLE语句在mysql服务器上创建一个表。要做到这一点,请遵循以下步骤:
- 在您的系统上安装并运行MySQL Workbench。
- 一旦安装了MySQL Workbench,并且在Workbench和目标MySQL服务器之间建立了连接,单击本地实例MySQL57(如下图截图):
- 当出现提示时,输入连接MySQL服务器的密码,然后单击OK。
- 在本地实例MySQL57窗口中,单击SQL并输入以下代码片段:
创建数据库样本
使用样本;
创建表prdTable_1
(columnn1 int(11) NOT NULL,
column2 char(10)
CHARACTER SET utf8默认为空
(5) utf8默认为空
varchar(50)
主键(column1)
);
模式转换过程完成后,您需要移动数据。
下面是一个例子,其中Table_1表从prd模式被手动插入到' MySQL工作台本地实例':
INSERT INTO prdtable_1(columnn1,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。
Q.我可以从MS SQL Server离线迁移到MySQL吗?
回答:是的,使用Stellar数据库转换器,您可以将MS SQL Server数据库在脱机模式下移动到MySQL。
问:我是否需要安装MS SQL和MySQL来检查可以转换的数据库对象的预览?
回答:不,使用Stellar数据库转换器,您可以预览所有可以转换的数据库对象,无需安装MS SQL和MySQL。