将MS SQL脚本转换为Mysql和Oracle

时间:2009-09-07 14:53:45

标签: sql mysql sql-server oracle

我开发的其中一个应用程序在本地安装在客户的站点上。这意味着我们必须支持MySQL,MSSQL和Oracle,因为并非所有客户都使用相同的数据库引擎。

我正在为应用程序编写补丁,其中一部分涉及执行5000行sql脚本来修改数据库。该脚本是使用MSSQL语法编写的,但是我想知道是否有一个应用程序可以自动将MSSQL语法转换为Oracle和/或MySQL的语法,以免我不必手动执行它。

5 个答案:

答案 0 :(得分:4)

这是一个古老的主题,但我建议使用以下工具:http://www.sqlines.com/online。我有很好的使用经验。自3个月前(当我开始使用它时)没有发现任何问题。

答案 1 :(得分:2)

要转换为Oracle,您可以尝试Migration Workbench

答案 2 :(得分:1)

更令人担心的是,数据库支持不同的锁定机制,因此您可以在其中获得一些表和索引,但是当您将其暴露到其中时,可能会引入一些很难调试/复制的问题。野。

您需要作为3位专家对该批次进行排序 - 每个SQL Server,MySQL和Oracle。那个或你的数据库需要最多只运行一个用户,性能很差,数据库机制很平均。

...对不起

答案 3 :(得分:1)

我不知道数据库引擎编程语法转换器。但是,由于您正在使用多数据库平台,我会考虑使用Enterprise Library及其应用程序块。这会让你头疼,你必须相信我!

我知道您可能没有足够的时间来处理即将发布的版本,因此您必须手动设置脚本,但请帮自己一个忙,并考虑使用Microsoft Enterprise Library。

另一种可能的方法是使这些引擎尽可能地彼此接近,以便您可以更方便地使用这三种引擎。因此,它需要您分析并决定应该在哪里以及为什么创建哪些函数?这是艰苦的工作,认真。

根据我自己的经验,我不再没有企业库,至少是数据应用程序块(DAAB)。

这里有链接:

  1. http://www.microsoft.com/downloads/details.aspx?FamilyId=1643758B-2986-47F7-B529-3E41584B6CE5&displaylang=en
  2. http://www.codeplex.com/entlib
  3. 如果这有助于您,请告诉我。如果您需要有关使用Enterprise Library设置数据访问层的进一步帮助,请与我们联系。

    编辑2015.01.16

    目前另一种最佳方法是使用NHibernateEntity Framework或其他ORM工具。

    使用它们,不再需要任何SQL脚本,所有内容都是根据您的RDBMS配置为您生成的。

答案 4 :(得分:0)

  

我正在为应用程序编写补丁,其中一部分涉及执行5000行sql脚本来修改数据库。该脚本使用MSSQL语法编写,但我想知道是否有一个应用程序可以自动将MSSQL语法转换为Oracle和/或MySQL的语法以节省我的费用手动完成。

这几乎不可能。

所有这些系统支持的SQL的公共子集很少。

由于您的脚本中有5000行代码,因此很可能不在此子集中。

最糟糕的是,它通常不仅仅是语法差异,而是主要的概念差异。

    例如,
  • Oracle支持MERGE语句,该语句允许在单个查询中插入,删除和更新。

    SQL Server 2005MySQL都不支持。

  • MySQL支持同时从多个表格中删除:OracleSQL Server无效。

  • SQL ServerOracle不同,
  • MySQL可以更新使用分析函数的CTE