我开发的其中一个应用程序在本地安装在客户的站点上。这意味着我们必须支持MySQL,MSSQL和Oracle,因为并非所有客户都使用相同的数据库引擎。
我正在为应用程序编写补丁,其中一部分涉及执行5000行sql脚本来修改数据库。该脚本是使用MSSQL语法编写的,但是我想知道是否有一个应用程序可以自动将MSSQL语法转换为Oracle和/或MySQL的语法,以免我不必手动执行它。
答案 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)。
这里有链接:
如果这有助于您,请告诉我。如果您需要有关使用Enterprise Library设置数据访问层的进一步帮助,请与我们联系。
编辑2015.01.16
目前另一种最佳方法是使用NHibernate,Entity Framework或其他ORM工具。
使用它们,不再需要任何SQL脚本,所有内容都是根据您的RDBMS配置为您生成的。
答案 4 :(得分:0)
我正在为应用程序编写补丁,其中一部分涉及执行
5000
行sql脚本来修改数据库。该脚本使用MSSQL
语法编写,但我想知道是否有一个应用程序可以自动将MSSQL
语法转换为Oracle
和/或MySQL
的语法以节省我的费用手动完成。
这几乎不可能。
所有这些系统支持的SQL
的公共子集很少。
由于您的脚本中有5000
行代码,因此很可能不在此子集中。
最糟糕的是,它通常不仅仅是语法差异,而是主要的概念差异。
Oracle
支持MERGE
语句,该语句允许在单个查询中插入,删除和更新。
SQL Server 2005
和MySQL
都不支持。
MySQL
支持同时从多个表格中删除:Oracle
或SQL Server
无效。
SQL Server
和Oracle
不同, MySQL
可以更新使用分析函数的CTE
。