我在Windows服务器上的SQL Server 2008上有一个数据库,我想将所有数据移到Ubuntu服务器上的MySQL数据库中。我尝试将SQL Server导入和导出向导与MySQL ODBC驱动程序一起使用,并且它可以正确访问两个数据库,但是不存在包含用于类型转换的规范的xml文件,并且该规范对于我而言无法正确创建。有谁知道如何创建类型转换文件或在哪里可以找到更好的工具来传输此数据?
我在Windows服务器上的SQL Server 2008上有一个数据库,我想将所有数据移到Ubuntu服务器上的MySQL数据库中。我尝试将SQL Server导入和导出向导与MySQL ODBC驱动程序一起使用,并且它可以正确访问两个数据库,但是不存在包含用于类型转换的规范的xml文件,并且该规范对于我而言无法正确创建。有谁知道如何创建类型转换文件或在哪里可以找到更好的工具来传输此数据?
Answers:
我有两个建议:
1)我不喜欢提出商业产品,但是有一个49.00美元的工具可以将MSSQL迁移到MySQL
2)尝试MySQL的MSSQL迁移论坛以获取更多建议
有一个旧产品在2010年1月停产,称为MySQL Migration Toolkit。如果可以保留它,可以使用它。
我找到了档案!这是MySQL迁移工具包
在将Microsoft SQL Server迁移到MySQL的指南(仍为商业版)上,从Oracle获取白皮书(PDF )
根据此MySQL WebPage的规定,本节MySQL Workbench: Database Migration Wizard
声称MySQL Workbench具有将DB对象从SQL Server迁移到MySQL的功能。
根据Marian的建议,我通过将MySQL服务器设置为MS SQL Server中的链接服务器,找到了有关在另一个方向进行复制的答案。通过将MySQL设置为链接服务器,我可以同时在两个数据库上运行SQL查询,这恰好提供了解决此问题所需的功能。
您是否考虑过将SSIS用于此任务?这是用于SQL Server的ETL工具,它具有许多可以帮助您执行此任务的转换和逻辑。
MySQL Workbench可以做到这一点:
http://dev.mysql.com/downloads/workbench
它可以直接安装在MS SQL Server计算机上(速度优势!),该计算机需要能够访问您的Ubuntu MySQL Server。
我最近发布了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存储库上打开一个问题,我将在不到一周的时间内对其进行修补!
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的官方网站上获得此软件的免费版本。