0

我们正在将我们的数据库从 MySQL 迁移到 PostgreSQL,并且我们现有应用程序中的大部分 SQL 都需要重写。

我想知道是否有任何工具可以将 MySQL SQL 转换为 PostgreSQL SQL,这样我们就可以避免手动一一重写这些 SQL。

4

1 回答 1

1

SQL 足够复杂,以至于一个通用工具来“理解”一条 SQL 语句并在另一种方言中生成一个兼容的等价物是不切实际的。特别是因为大多数 SQL 对实际上并未在任何地方强制执行的数据做出隐含假设,因此 SQL 语句可能在一个数据集上做一件事情,但在另一个数据集上做一些不同(和意外)的事情。您将如何编写一个工具来转换使用会话变量的 MySQL 查询?还是使用可写公用表表达式的 PostgreSQL 查询?你不可能自动化它。

您也许可以找到工具来自动化简单的语法和方言更改以及常见的一对一函数替换,但仅此而已。除非你有大量简单的、非常相似的 SQL 语句,否则这些工具并不会被大量使用。如果您有大量非常相似且可能最初由机器生成的语句,您可能需要考虑您的应用程序设计,因为这并不是一个真正的好方法。

您通常最好手动修复 SQL,可能在一些简单的数据类型替换之后。

如果您首先修复您的 SQL 以在 ANSI 和 STRICT 模式下运行的 MySQL 上正常工作,这将对您有很大帮助,因此您会发现一些非常愚蠢的 MySQL 主义,您可以将代码更改为 ANSI 引用而不是 MySQL 的引用规则, ETC。

于 2013-04-01T07:24:19.197 回答