【问题标题】:Convert MS SQL script to Mysql and Oracle将 MS SQL 脚本转换为 Mysql 和 Oracle
【发布时间】:2010-11-26 06:16:19
【问题描述】:

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

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

【问题讨论】:

  • 问题是:您是否会信任您的“生产”数据库并使用自动生成的脚本...
  • 当然,如果它通过了 QA 的测试程序。

标签: sql mysql sql-server oracle


【解决方案1】:

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

【讨论】:

  • 不支持大查询
【解决方案2】:

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

【讨论】:

  • 您的链接已失效。请更新它。
  • 或者,你知道,你可以更新它......你有足够的声誉。
  • 因为我正在寻找相同的 :)
【解决方案3】:

更令人担忧的是,数据库支持不同的锁定机制,因此您可能能够在其中获取一些表和索引,但是当您将其公开到狂野的。

您需要 3 位专家来解决这个问题 - SQL Server、MySQL 和 Oracle 各一位。该数据库或您的数据库最多需要一个用户运行,性能较差且数据库机制非常平均。

对不起...

【讨论】:

  • 很有趣,因为它只供一个用户(应用程序)使用,并且执行的任何命令都非常简单,它只是充当持久层。
【解决方案4】:

我不知道数据库引擎编程语法转换器。但是,由于您正在使用多数据库平台,我会考虑使用 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

如果这对您有帮助,请告诉我。如果您在使用 Enterprise Library 设置数据访问层时需要更多帮助,请告诉我。

编辑 2015.01.16

如今,另一种最佳方法是使用 NHibernateEntity Framework 或其他 ORM 工具,例如这些。

有了它们,不再需要任何 SQL 脚本,一切都根据您的 RDBMS 配置为您生成。

【讨论】:

    【解决方案5】:

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

    这几乎是不可能的。

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

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

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

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

      SQL Server 2005MySQL 都不支持。

    • MySQL 支持同时从多个表中删除:在OracleSQL Server 中不可用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-10
      • 2013-08-10
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 2015-03-19
      • 2010-12-18
      • 2016-04-14
      相关资源
      最近更新 更多