2

我有大约 140 - 150 个存储过程需要从 MS SQL 2005 迁移到 MySQL 5.1

在过去八小时内成功移植了其中的 0 个后,我决定顺便过来询问是否有人有任何经验、提示或知道一些可以提供帮助的实用程序。

MySQL 管理员不是很有帮助,令人沮丧的是“MySQL 错误号 1064 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法”。鉴于平均 SP 的长度为 +100 行,简单地猜测问题所在不是一种选择。

例如。这是我得到的确切错误:

  Script line: 1    You have an error in your SQL syntax; check the manual that
   corresponds to your MySQL server version for the right syntax to use near '' at line 5

然后在第 5 行,我只有:

declare PropID float;
4

3 回答 3

3

Gartner Group 报告称,两种相似语言之间的手动转换以每天大约 150 行的速度发生。根据他们的说法,你的进步率只是比平均水平低一点:-} 更糟糕的是,它预测你面前有 150 个工作日的努力。

这就是人们构建自动迁移工具的原因,这些工具可以以常规且值得信赖的方式应用转换规则。如果你幸运的话,有人在你之前做过这件事。人们可能想要做的从到转换对的数量是巨大的,比人们所做的要大得多,所以通常你不走运。

有人会说的下一件事是“使用正则表达式”。这可能行不通,因为您必须找到不是“常规”而是“无上下文”的编程语言结构。

获得执行此操作的工具的一种方法是使用程序转换。这些是用另一个代码片段替换一个代码片段的编程操作。它们通常需要一个完整的语言解析器,以便操作可以像编译器一样对程序元素进行操作,而不是对文本字符串进行操作。

编写程序转换的一种好方法是使用语言的表面语法作为模式,本质上是“如果你看到这个,就用那个替换它”。将这些视为加强处理“无上下文”问题的“正则表达式”。

我们的DMS Software Reengineering Toolkit是一个可以接受这种表面语法程序转换的工具。

编写可信赖的转换代码需要一些努力。您有大约 15,000 行代码需要转换。当要转换的代码量如此之少时,在编码转换与简单地咬紧牙关和完成工作之间进行权衡是很困难的。

于 2009-12-06T19:33:47.337 回答
1

您可以尝试MySQL Query Browser而不是 MySQL 管理员:

MySQL Administrator 旨在管理 MySQL 服务器,而 MySQL Query Browser 旨在帮助您查询和分析存储在 MySQL 数据库中的数据。

于 2009-12-06T19:27:41.067 回答
0

您正在从一个强大的工具移植到一个不太强大的工具。如果旧程序使用 MySQL 不支持的特性,这会使移植几乎不可能。

可能有帮助的一件事是,大多数 SQL Server 过程都实现了某种业务逻辑。好消息是,通常只使用其中的一小部分。过滤掉未使用的程序可以为您节省大量工作。

坏消息是,业务程序必须在移植后进行测试;即使是最好的程序员也不能用不同的语言重写它们并确保它们工作。这意味着大量的测试工作,以及移植程序投入生产后的大量支持工作。

于 2009-12-06T20:12:31.600 回答