从MySQL导入导出SQL Server数据库

时间:2012-03-22 21:00:46

标签: mysql sql-server

我有.net脚本访问微软服务器,我需要在这一端与另一端的LAMP服务器同步数据库。目前我已经编写了自己的CSV导出例程和匹配的导入程序,但它在应变下吱吱作响。有没有更有效的方法来解决这个问题?我能以某种方式直接将CSV导出流式传输到IIS吗?

我知道如果我有更多权限,我可以运行BACKUP DATABASE命令,然后使用FTP运行备份到其他服务器,并希望找到一些方法将其导入MySQL。然而,这不是一种选择。

5 个答案:

答案 0 :(得分:5)

如果可以从MSSQL服务器访问MySQL,那么您可以在MSSQL中创建链接服务器,并在MSSQL中创建MERGEINSERTUPDATE或其他任何MySQL表。

答案 1 :(得分:4)

我做了类似的事情。最简单的方法是在MSSQL服务器和MySQL服务器之间建立直接连接。您在MSSQL中将链接服务器设置为MySQL服务器,然后使用插入,更新等对链接服务器执行事务。这就是ta.speot.is在他的回答中提到的。但是,您没有与MySQL服务器的直接链接,因此该选项不可行。

另一种选择是使用MSSQL Service代理。使用服务代理,您可以将单个更新,删除和插入排队到Web服务。此Web服务可以托管在IIS上。 Web服务将从队列中调用,然后您可以将各个事务一次一个地应用于MySQL数据库。服务代理是嵌入在MSSQL 2005+中的异步消息传递系统。有了它,您可以将消息发送到其他服务器,数据库甚至外部服务。

请记住,Service Broker架构需要时间来学习和实施。我使用服务代理在mssql和mysql之间创建了自定义复制架构,服务代理每天在celeron笔记本电脑上处理8800万以上的事务。它只是用了一些严重的肘部油脂。

UPDATE 似乎SQL2008允许您以某种方式在SQL服务器之外运行Service Brokers。请参阅此链接http://blogs.msdn.com/b/sql_service_broker/archive/2008/11/21/announcing-service-broker-external-activator.aspx我不知道这可能是您的街道上的更多内容。

答案 2 :(得分:4)

您可以编写具有.NET DataReaders的脚本来在MS SQL上打开游标,然后使用连接到MySQL的另一个连接逐行插入数据。您可以按顺序处理所有表。

答案 3 :(得分:3)

而不是CSV文件生成适合在MySQL服务器上运行的SQL脚本

答案 4 :(得分:0)

我不知道这是否会有所帮助,但很久以前我创建了一个小软件,用大型数据集完成这项特殊任务,这里是:

http://csvimporter.codeplex.com/

我把它开源了:)

希望它有所帮助。