![如何每天自动从 mysqldump 文件创建 SQL Server 数据库?](https://linux22.com/image/563052/%E5%A6%82%E4%BD%95%E6%AF%8F%E5%A4%A9%E8%87%AA%E5%8A%A8%E4%BB%8E%20mysqldump%20%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%20SQL%20Server%20%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%9F.png)
最近,一家供应商宣布他们正在升级其流程,我们从他们那里获得的自动每日数据转储现在将采用 MySQL 数据转储格式。不幸的是,我们是一家只使用 Microsoft 的商店,因此我们无法直接导入这些文件。
所以我的问题是:如何获取数据转储文件并将其导入 SQL Server 2005 实例以创建数据库?
注意事项:
- 该解决方案需要自动化,并且需要不人工干预;它必须是我们可以每天安排的事情,并且在它成功/失败时收到通知。
- 我们喜欢免费的工具(谁不喜欢呢?)/已经购买的工具(例如,已经是 SQL Server 的一部分),但是如果需要的话,我们也可以购买一些。
- 我们无法控制数据或原始数据库,因此我们无法控制
mysqldump
使用不同设置的“兼容”选项再次运行该命令。 - 我们真的不想做这样的事情:加载本地 MySQL 实例来导入转储,然后将数据泵送到 MSSQL。正如我提到的,我们是一家只使用 MS 的商店,我们没有设置支持 MySQL 实例,即使是像这样的自动化流程。
答案1
我会使用第三方做一些不同的事情。我会使用 SSIS 将其从 MySQL 直接拉入 SQL Server,并在 SQL Server 内安排任务。将 MySQL 转储导入 SQL Server 会有问题,因为数据库引擎之间的 DDL 有很大差异。
如果您无法直接访问第三方,您可以在本地获取正在运行的 MySQL 实例,然后导入 mysql 转储(在批处理文件中使用 mysqlimport)。
您应该能够使用 SQL Server 2005 中的任务计划程序和 SSIS + Jobs 轻松地实现此操作的自动化。
答案2
http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_xml
转储通常包含用于创建表、填充表或两者的 SQL 语句。但是,mysqldump 也可用于生成 CSV、其他分隔文本或 XML 格式的文件。
然后我将采用 XML 格式,并在必要时使用 XSLT 进行转换。
答案3
在堆栈溢出他们指出了这个解决方案:从 mysql 到 mssql. 它需要加载一个mysql实例。
如果您的要求是固定不变的(我指的是您关于“不需要人工干预”的评论),那么对您的组织来说,最好的解决方案就是花钱请人为您编写此逻辑。在数据库之间迁移内容需要人工干预,您睡觉时花园里的精灵不会帮您完成。必须有人编写此逻辑。
写完这些之后,在 Windows 服务器上运行 mysql 完全没问题,而且如果你运行的是社区版,则无需花费任何费用。顺便说一句,如果这是管理要求,那么从 Oracle 购买它可能会花费很多钱。
答案4
如果您不想运行 MySQL 实例并编写导入和重新导出脚本(以 MSSQL 友好格式),那么您必须编写一个解析器将 MySQL 转储格式转换为 CSV 或一些有用且简单的格式。
我认为你最好运行一个 MySQL 实例并交换数据。你甚至可以使用 VBA 来通过 DSN 实现自动化一旦数据进入 MySQL。
由于你可能经营着一家非常重视时间的企业,因此可以考虑以下商业解决方案对称