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

Mat 83 mysql sql-server csv bcp sql-server-2005

我一直在SQL Server 2005试图获取大量数据.我已经获得了一个包含近300个表的数据库,我需要将其转换为MySQL数据库.我的第一个调用是使用bcp,但不幸的是它没有生成有效的CSV - 字符串没有封装,所以你不能处理任何带有逗号的字符串(或者你用作分隔符的任何行)我仍然需要手工编写所有的create table语句,因为很明显CSV并没有告诉你有关数据类型的任何信息.

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

有人知道这样的工具吗?我不介意它做了多少假设或简化发生,只要它支持整数,浮点数,日期时间和字符串.我不得不做很多修剪,正常化等等,所以我不关心保持键,关系或类似的东西,但我需要快速的初始数据集!

Nick Berardi.. 60

我找到的最好的方法是MySQL提供的MySQL Migration Toolkit.我成功地将它用于一些大型迁移项目.

  • +1 - 现在是EOL,MySQL Workbench将包含一个迁移插件(过去的版本5.2),但现在使用以下链接:http://dev.mysql.com/downloads/gui-tools/5.0.html (2认同)

用户甲.. 9

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

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


pix0r.. 8

滚动自己的PHP的解决方案肯定会的工作,虽然我不知道如果有一个很好的方式自动复制从一个数据库到另一模式(也许这是你的问题).

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


用户甲.. 8

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

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

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


Dillie-O.. 6

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