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

我一直在抨击SQL Server 2005试图获取大量数据。 我已经给了一个有近300个表的数据库,我需要把它变成一个MySQL数据库。 我的第一个电话是使用bcp,但不幸的是,它不会产生有效的CSV – string不封装,所以你不能处理任何有一个string的行(或任何你用作分隔符)我仍然需要手写所有的创build表语句,显然CSV不会告诉你有关数据types的任何信息。

更好的是,如果有一些工具可以连接到SQL Server和MySQL,然后做一个副本。 你失去了视图,存储过程,触发器等等,但是复制一个只使用基本types从一个数据库到另一个数据库的表并不难…是吗?

有人知道这样的工具吗? 我不介意它做了多less假设或简化发生,只要它支持整数,浮点数,date时间和string。 无论如何,我必须做很多修剪,规范化等等,所以我不在乎保持键,关系或类似的东西,但是我需要最初的一组数据。

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

SQL Server 2005“标准”,“开发人员”和“企业”版本都有SSIS ,它取代了Sql server 2000中的DTS。SSIS与它自己的数据库有一个内置的连接,你可以find别人为MySQL编写的连接。 这是一个例子。 一旦你有了连接,你应该能够创build一个在两者之间移动数据的SSIS包。

我不需要将数据从SQlServer移动到MySQL,但我想象一旦安装了MySQl连接,它就像在两个SQLServer DB之间移动数据一样,这非常简单。

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

你很可能会希望在MySQL目标中预先设置数据库和表(导出将自动创build表,但这往往导致失败)。 您可以通过右键单击数据库,使用“任务 – >生成脚本”在MySQL中快速创build表。 一旦你的创build脚本生成,你将需要通过search/replaceMSSQL中存在的关键字和types到MYSQL。

当然,你也可以像正常一样备份数据库,并find一个实用程序,它将恢复MYSQL上的MSSQL备份。 我不确定是否存在。

滚动你自己的PHP解决scheme肯定会工作,虽然我不知道是否有一个很好的方法来自动复制架构从一个数据库到另一个(也许这是你的问题)。

如果你只是复制数据,或者你需要定制代码来在两个数据库之间进行转换,我build议使用PHP 5.2+和PDO库。 您将能够使用PDO ODBC连接(并使用MSSQL驱动程序)。 使用其他库,将MSSQL中的大型文本字段和多字节字符导入到PHP中遇到了很多问题。

另一个可以尝试的工具是SQLMaestro套件 – http://www.sqlmaestro.com确定精确的工具是一个有点棘手的问题,但是他们有各种各样的免费和购买工具来处理各种各样的任务为多个数据库平台。; 我build议首先尝试MySQL的数据向导工具,因为我相信会有你需要的正确的“导入”工具。