90

我一直在反对SQL Server 2005尝试获取大量数据。我得到了一个包含近 300 个表的数据库,我需要将其转换为 MySQL 数据库。我的第一个电话是使用 bcp 但不幸的是它不会产生有效的 CSV - 字符串没有被封装,所以你不能处理任何有一个带有逗号的字符串的行(或者你用作分隔符的任何行)而且我仍然需要手写所有的创建表语句,因为显然 CSV 并没有告诉你任何关于数据类型的信息。

更好的是,如果有一些工具可以同时连接 SQL Server 和 MySQL,然后复制。您会丢失视图、存储过程、触发器等,但将仅使用基本类型的表从一个数据库复制到另一个数据库并不难……是吗?

有人知道这样的工具吗?我不介意它做了多少假设或进行了哪些简化,只要它支持整数、浮点数、日期时间和字符串。无论如何,我必须做很多修剪、规范化等,所以我不关心保留密钥、关系或类似的东西,但我需要快速的初始数据集!

4

5 回答 5

59

我发现最好的方法是 MySQL 提供的MySQL Migration Toolkit。我已经成功地将它用于一些大型迁移项目。

于 2008-08-01T17:54:08.163 回答
9

SQL Server 2005“Standard”、“Developer”和“Enterprise”版本有SSIS,它取代了 SQL Server 2000 中的 DTS。SSIS 有一个到它自己的 DB 的内置连接,你可以找到其他人编写的连接mysql。是一个例子。建立连接后,您应该能够创建一个在两者之间移动数据的 SSIS 包。

我不必将数据从 SQLServer 移动到 MySQL,但我想一旦安装了 MySQL 连接,它的工作方式与在两个 SQLServer DB 之间移动数据相同,这非常简单。

于 2008-09-15T16:11:20.677 回答
9

使用 MSSQL Management Studio,我已经使用 MySQL OLE DB 转换了表。右键单击您的数据库并从那里转到“任务->导出数据”,您可以指定 MsSQL OLE DB 源、MySQL OLE DB 源并在两个数据源之间创建列映射。

您很可能希望提前在 MySQL 目标上设置数据库和表(导出将希望自动创建表,但这通常会导致失败)。您可以通过右键单击数据库使用“Tasks->Generate Scripts”在 MySQL 中快速创建表。生成创建脚本后,您需要逐步搜索/替换 MSSQL 到 MYSQL 中存在的关键字和类型。

当然,您也可以像平常一样备份数据库,并找到一个实用程序来恢复 MYSQL 上的 MSSQL 备份。但是,我不确定是否存在。

于 2008-09-15T16:23:13.380 回答
8

滚动您自己的 PHP 解决方案肯定会奏效,但我不确定是否有一种好方法可以自动将架构从一个数据库复制到另一个数据库(也许这是您的问题)。

如果您只是复制数据,和/或无论如何您都需要自定义代码来在两个 DB 之间的修改模式之间进行转换,我建议您使用 PHP 5.2+ 和 PDO 库。您将能够使用 PDO ODBC 进行连接(并使用 MSSQL 驱动程序)。使用其他库将大型文本字段和多字节字符从 MSSQL 导入 PHP 时遇到了很多问题。

于 2008-08-01T16:36:42.080 回答
6

另一个可以尝试的工具是SQLMaestro 套件。确定精确的工具有点棘手,但他们有各种各样的工具,包括免费的和购买的,可以处理多个数据库平台的各种任务。我建议首先为 MySQL 尝试数据向导工具,因为我相信它会有你需要的适当的“导入”工具。

于 2008-08-01T16:47:54.927 回答