如何每天自动从mysqldump文件创build一个SQL Server数据库?

最近,一家供应商宣布他们正在升级他们的stream程,而我们从他们那里获得的每日自动化数据转储现在将以MySQL数据转储格式进行。 不幸的是,我们只是微软的商店,所以我们不能直接导入这些文件。

所以我的问题是:如何获取数据转储文件并将其导入到SQL Server 2005实例中以创build数据库?

注意事项:

  • 解决scheme需要自动化,不需要人工干预; 它必须是我们可以每天计划的事情,只是得到它的工作/失败的通知。
  • 我们喜欢免费(谁不?)/已经购买的工具(例如已经是SQL Server的一部分),但是如果需要的话,我们可以购买一些东西。
  • 我们无法控制数据或原始数据库,所以我们不能控制运行mysqldump命令,而'compatible'选项设置不同。
  • 我们真的不想做一些事情,比如加载MySQL的本地实例来导入转储,然后将数据转储到MSSQL。 就像我刚才提到的那样,我们是一个只有MS的商店,而且我们并没有设置为支持MySQL实例,即使是像这样的自动化过程。

我会做与第三方不同的事情。 我会使用SSIS将它从MySQL直接导入到SQL Server中,并在SQL Server中调度任务。 将MySQL转储导入到SQL Server中会有问题,因为DDL在数据库引擎之间差别很大。

如果你不能直接访问第三方,你可以在本地获得正在运行的MySQL实例,然后导入mysql dump(在batch file中使用mysqlimport)。

您应该能够使用SQL Server 2005中的任务计划程序和SSIS +作业轻松自动执行此操作。

http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_xml

转储通常包含SQL语句来创build表,填充它或两者。 但是,mysqldump也可以用于生成CSV,其他分隔文本或XML格式的文件。

然后我将使用XML格式,并使用XSLT将其转换为必要的地方。

在stackoverflow中他们指出了这个解决scheme: 从mysql到mssql 。 它需要加载一个mysql实例。

如果你的要求是成立的(我在这里指的是你对“不需要人工干预”的评论),那么对你的组织来说最好的解决scheme就是付钱给你编程这个逻辑。 在数据库之间迁移东西需要干预,在睡觉的时候不会由小花园的侏儒来完成。 有人将不得不编程它的逻辑。

写完所有这些之后,在Windows服务器上运行mysql是非常好的,如果你运行社区版本,那么你将毫无成本。 如果这是一个pipe理要求,你可能总是从Oracle购买它的钱。

如果你不想运行一个MySQL实例和脚本的导入和重新导出(MSSQL友好的格式),那么你将不得不编写一个parsing器来翻译MySQL转储格式为CSV或一些有用和简单。

我认为你更好的运行一个MySQL实例并交换数据。 一旦数据在MySQL中,您甚至可以使用VBA 通过DSN自动执行此操作 。

既然你可能运行一个你的时间是值得的东西的商业,考虑像对称的商业解决scheme