如何将数据从SQL Server 2005导出到MySQL

Translate

我一直在反对SQL Server 2005试图获取大量数据。我已经获得了一个包含近300个表的数据库,我需要将其转换为MySQL数据库。我的第一个电话是使用bcp,但不幸的是,它不会产生有效的CSV-字符串未封装,因此您不能处理其中包含逗号的字符串的任何行(或用作分隔符的任何行)而且我仍然必须手写所有的create table语句,因为显然CSV不会告诉您有关数据类型的任何信息。

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

有人知道这样的工具吗?只要它支持整数,浮点数,日期时间和字符串,我都不介意进行多少假设或进行什么简化。无论如何,我必须进行大量的修剪,规范化等工作,因此我不在乎保留键,关系或类似的东西,但是我需要快速的初始数据集!

This question and all comments follow the "Attribution Required."

所有的回答

Translate

我发现的最好方法是MySQL迁移工具包由MySQL提供。我已经成功地将其用于一些大型迁移项目。

来源
Translate

SQL Server 2005“标准”,“开发人员”和“企业”版本具有SSIS,它替代了Sql Server 2000中的DTS。SSIS与其自身的数据库有一个内置连接,您可以找到其他人为MySQL编写的连接。这里就是一个例子。建立连接后,您应该能够创建一个在两个之间移动数据的SSIS包。

我不必将数据从SQlServer移到MySQL,但是我想一旦安装MySQl连接,它的工作原理就和在两个SQLServer DB之间移动数据的工作一样,这很简单。

来源
Elton Lee
Translate

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

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

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

来源
Translate

滚动自己的PHP解决方案当然可以工作,尽管我不确定是否存在将模式从一个数据库自动复制到另一个数据库的好方法(也许这是您的问题)。

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

来源
Translate

另一个可以尝试的工具是SQLMaestro套件-http://www.sqlmaestro.com确定精确工具有点棘手,但是它们有多种工具,包括免费和购买工具,可处理多个数据库平台的各种任务。我建议先尝试使用MySQL的数据向导工具,因为我相信它将拥有您需要的正确的“导入”工具。

来源