需要将SQL Server迁移到MySQL


22

我在Windows服务器上的SQL Server 2008上有一个数据库,我想将所有数据移到Ubuntu服务器上的MySQL数据库中。我尝试将SQL Server导入和导出向导与MySQL ODBC驱动程序一起使用,并且它可以正确访问两个数据库,但是不存在包含用于类型转换的规范的xml文件,并且该规范对于我而言无法正确创建。有谁知道如何创建类型转换文件或在哪里可以找到更好的工具来传输此数据?


1
你看到这个问题了吗?这是关于将数据从MySql复制到MSSQL。也许您会在这里找到一些提示。
玛丽安·

@Marian感谢您的链接。将MySQL服务器用作SQL Server中的链接服务器似乎是解决我的问题的一种方法。
murgatroid99 2011年

1
我们在谈论多少数据?5mb?3TB?
AaronJAnderson

我认为是GB或10 GB,但我真的不记得了,因为这个问题是一年半以前的。
murgatroid99

Answers:


13

我有两个建议:

1)我不喜欢提出商业产品,但是有一个49.00美元的工具可以将MSSQL迁移到MySQL

2)尝试MySQL的MSSQL迁移论坛以获取更多建议

更新2011-06-03 18:03 EDT

有一个旧产品在2010年1月停产,称为MySQL Migration Toolkit。如果可以保留它,可以使用它。

更新2011-06-03 18:06 EDT

我找到了档案!这是MySQL迁移工具包

更新2011-06-03 18:11 EDT

这是MySQL迁移工具包概述

更新2011-06-03 19:08 EDT

另一种商品($ 29)

更新2011-06-03 19:30 EDT

这是将MSSQL迁移到MySQL的免费工具列表。

更新2011-06-15 17:47 EDT

在将Microsoft SQL Server迁移到MySQL指南(仍为商业版)上,从Oracle获取白皮书(PDF )

更新2012-08-21 01:24 EDT

根据此MySQL WebPage的规定,本节MySQL Workbench: Database Migration Wizard声称MySQL Workbench具有将DB对象从SQL Server迁移到MySQL的功能。


1
如果可以避免,我宁愿不使用任何商业产品。我尝试使用Migration Toolkit,但我认为它与MySQL的最新版本不兼容:运行向导后,生成的SQL插入语句存在大量语法错误,并且生成的表中没有行。共享软件工具似乎也可以用于旧版本的MySQL。感谢您的尝试。
murgatroid99 2011年

4

根据Marian的建议,我通过将MySQL服务器设置为MS SQL Server中的链接服务器,找到了有关在另一个方向进行复制的答案。通过将MySQL设置为链接服务器,我可以同时在两个数据库上运行SQL查询,这恰好提供了解决此问题所需的功能。


3

您是否考虑过将SSIS用于此任务?这是用于SQL Server的ETL工具,它具有许多可以帮助您执行此任务的转换和逻辑。


我提到的导入/导出向导实际上是创建SSIS包的。我遇到的问题是SSIS使用XML文件存储有关如何在不同数据库管理系统中的类型之间进行转换的数据,而这些文件对于MySQL不存在。
murgatroid99 2011年


2

我试过了 迁移工具包从SQL Server导入到MySQL。但是发现SQLyog Import外部数据很好。我可以安排导入过程,还可以进行必要的映射以导入到现有表中。从这里下载。

在此处输入图片说明


SQLyog是一个很棒的工具,但是“导入外部数据”功能非常慢。由于比MySQL Workbench慢几个数量级。我希望SQLyog开发人员可以解决此问题,因为该界面比Workbench直观得多。但是,除非您仅要导入数百行,否则要等待数小时甚至数天才能完成导入。
nextgentech '17

2

我最近发布了etlalchemy以完成此任务。这是一个开放源代码的解决方案,允许使用4行Python在任意2个SQL数据库之间进行迁移。支持的RDBMS包括MySQL,PostgreSQL,Oracle,SQLite和SQL Server。

这将完成将一个SQL供应商的列类型映射到另一种SQL供应商的列的艰巨任务。它不仅会转移和翻译模式,还可以跨数据库迁移所有数据,索引和约束

安装:

$ pip install etlalchemy

在El Capitan上pip install --ignore-installed etlalchemy

跑步:

from etlalchemy import ETLAlchemySource, ETLAlchemyTarget

mssql_db_source = ETLAlchemySource("mssql+pyodbc://username:password@DSN")

mysql_db_target = ETLAlchemyTarget("mysql://username:password@hostname/db_name", drop_database=True)
mysql_db_target.addSource(mssql_db_source)

要获得有关项目起源的更多背景信息,请查看这篇文章。如果您在运行该工具时遇到任何错误,请在github存储库上打开一个问题,我将在不到一周的时间内对其进行修补!


0

MySQL Workbench Migration工具可以帮助您完成此任务

1)要开始迁移过程,请在MySQL Workbench主屏幕上,转到“数据库”->“迁移向导”。

2)我们应该检查先决条件,以确认是否可以继续执行任务。如果一切正常,我们可以按开始迁移。

3)在这一步中,我们需要提供有关源数据库的信息,在本例中为SQL Server。

我们将配置源参数:

数据库系统:Microsoft SQL Server

连接方式:ODBC(本地)

驱动程序:SQL Server

服务器:本地主机

用户名:sa

4)现在,我们可以使用“测试连接”按钮检查连接。

5)然后,我们需要添加目标参数:

连接方式:标准(TCP / IP)

主机名:Your_host_name

端口:3306

用户名:迁移

6)并按“测试连接”以确认添加的信息。

7)在下一步中,MySQL Workbench将连接到我们的SQL Server以获取目录和模式的列表。

8)现在,我们将从列表中选择Your_database_name数据库。

我们可以选择如何映射逆向工程模式和对象。我们将使用Catalog.Schema.Table-> Catalog.Table选项,因此在我们的MySQL中,我们将选择数据库以及SQL Server数据库中的当前表。

9)如果一切顺利,我们将列出要迁移的对象。

10)在这种情况下,我们有表对象,视图对象和例程对象。我们只选择表对象,因为对于其余对象,我们应该手动检查相应的MySQL等效代码。

11)在这一步中,将源中的对象转换为MySQL兼容对象。

12)如果一切顺利,我们可以选择在目标中创建迁移模式的方式来继续。我们将使用默认的“在目标RDBMS中创建模式”选项。

13)现在,让我们检查创建架构过程。

14)在下一步中,我们可以检查每个脚本执行的结果,并可以检查在MySQL服务器上创建的新数据库。

15)至此,我们将具有数据库结构,但是还没有数据。现在,我们将选择如何在MySQL服务器中复制数据。我们将使用“将表数据在线复制到目标RDBMS”选项。

16)在最后一步,我们可以检查迁移报告并完成任务。

将MS SQL DB转换为MySQL的另一种简便方法是使用Stellar的名为数据库Stellar Converter的DIY工具,该工具可以直接选择特定数据库的数据库文件并提供可转换表的预览,并且在转换后将直接将数据存储到指定的数据库中安装在您的系统上。在这种情况下,您必须提供MS SQL数据库文件,转换后它将存储在系统中安装的MySQL数据库中。您可以从Stellar的官方网站上获得此软件的免费版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.