将SQL Server查询转换为MySQL需要多长时间?

3
我被委托估算将.NET应用程序的数据访问层从使用SQL Server改为使用MySQL所需的时间。这不是讨论是否会发生的问题,而是需要估算需要多长时间。我已经估算了所有工作,除了将SQL Server中的存储过程翻译成MySQL查询。数据模型基本相同(通过表格相同或查询模拟原始架构),只是在MySQL中。我有大约100个存储过程,其中大部分是数据读取,并且将在DAL周围包装良好的单元测试,以便我们可以看到何时工作/中断。
因此,问题是在两种SQL方言之间进行翻译需要多少工作(广义上)?通常情况下,它是否往往是微不足道的工作,并且大多数都是使用查找和替换自动完成的?还是说需要手动调整大量典型查询的东西?我请求一些关于任务规模的一般指导。
感谢任何帮助。

一个好问题被提出了...这是一个当前正在运行的系统吗?是的,该系统已经投入生产,并持续更新/维护了大约一年半的时间。 - Matthew Nichols
5个回答

2
没有正确的答案,这取决于情况。如果你有一位MySQL和MSSQL的SQL专家,他可能可以在一两天内移植所有的100个存储过程,而另一位程序员可能需要2到3周时间。
理想情况下,SQL应该是标准的,但我们并不生活在理想的世界中。
参考链接:http://www.joelonsoftware.com/articles/fog0000000245.html

1
+1 不错的链接。我估计对于一个技术大牛来说需要2周,对于一个普通程序员需要6个月,而对于得分较低的程序员则可能永远无法完成。 - Andomar

0
在最糟糕的情况下,您可能需要逐行查看它们所有。您必须非常彻底,但我想大多数情况下只需阅读以确保其与mysql兼容。偶尔可能需要更改某些内容(主要是查询)。
这是一个困难的问题,因为它取决于很多因素。过程有多复杂?它们可以是100%与MySQL兼容,也可以是100%不兼容。您只需自己进行评估即可。
如果您对MySQL感到舒适,那么不应该需要超过一天的时间。

0

这将取决于情况,但很可能需要逐行浏览。如果存储过程只是简单的选择操作,那么这可能相当快,但即使是一些看似简单的操作也需要手动修改。例如,在MSSQL中select top 20 [column] from [table]变成了在MySQL中的select [column] from [table] limit 0,20。这甚至可能意味着更高级别代码的更改,例如处理分页等任务 - 您不能假设只需更改SQL即可使事情正常工作。

如果有更复杂的存储过程或使用T-SQL函数的任何内容,则可能需要长时间而且通常不令人满意的工作。


0

我认为这个问题没有正确答案。

有多少东西在使用mssql特定的内容,有哪些是兼容的?不确定。如果只是简单的选择查询,你应该不会遇到太多问题,但如果你要做更多的事情,你需要逐行分析,说实话,

最初的开发工作需要多长时间?还是在很多年的时间里完成的?

个人而言,我会抵制任何剪切和粘贴的诱惑,我会评估你所拥有的内容,然后从头开始用mysql编写所有内容,希望你的数据库已经完全记录下来了(),如果没有,那么我并不羡慕这个任务。

这是一个当前正在运行的系统还是正在开发中的系统?你没有说...不要忘记像排序和Unicode数据这样的东西,如果这是一个有实际内容的数据库,它不仅仅是将存储过程带过来的问题。

下一个需要考虑的问题是,当前的结构是否真的是你想要继续使用的,或者你可以转向Hibernate,然后有性能问题。

直接回答你的问题是,这取决于人和你所谈论的复杂性..但这绝对是一项需要非常小心的任务。特别是如果这是一个正在运行的系统。


0

最近我不得不将一个Oracle数据库迁移到MSSQL Server。我花了大约3天的时间阅读源代码并进行必要的调整。这个项目中有大约和你的项目一样多的查询,但这些查询几乎都是简单的(select、insert、update、delete)。一个存储过程通常包含多个查询,所以一周的工作可能是现实的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接