Mysql Oracle到PostgreSQL查询转换器是否可能?

Mysql Oracle到PostgreSQL查询转换器是否可能?,mysql,database,oracle,postgresql,Mysql,Database,Oracle,Postgresql,我正在考虑编写一个转换器,它接受任何oracle查询,并在假设表和列相同的情况下返回查询的Postgresql格式 我现在做的是及时的转换,所以我对这两者都有基本的了解,并希望得到一些专家的建议,这是很容易做到的还是不容易做到的 不是每个查询都可以。它们各自具有另一个所不具备的语法和功能—例如,Oracle中的MODEL子句,或PostgreSQL的特殊形式SELECT DISTINCT ON 大多数情况下,Oracle具有PostgreSQL所没有的功能:尝试使用商业版的PostgreSQL-

我正在考虑编写一个转换器,它接受任何oracle查询,并在假设表和列相同的情况下返回查询的Postgresql格式

我现在做的是及时的转换,所以我对这两者都有基本的了解,并希望得到一些专家的建议,这是很容易做到的还是不容易做到的

不是每个查询都可以。它们各自具有另一个所不具备的语法和功能—例如,Oracle中的MODEL子句,或PostgreSQL的特殊形式SELECT DISTINCT ON


大多数情况下,Oracle具有PostgreSQL所没有的功能:

尝试使用商业版的PostgreSQL-EnterpriseDB。它为Oracle提供了一个兼容层

如果您要自己编写Converctor:请查看此github项目:。它是Oracle SQL方言的开源解析器。我必须警告您,即使您有用于Oracle查询的AST,将AST转换为其他SQL方言仍然有很多工作要做。您还需要大量用于测试的示例查询。您可以在此项目的“测试”文件夹中找到一些示例查询


MySQL也实施了类似的项目,但我现在找不到它的主页。

部分解决方案是在PostgreSQL中提供Oracle中可用的功能。你可以看看


本项目的目标是从Oracle数据库实现一些功能。一些日期函数下一天,最后一天,trunc,round,…,字符串函数和一些模块DBMS\u警报,DBMS\u输出,UTL\u文件,DBMS\u管道。。。目前正在实施。在Oracle 10g上验证了功能性,模块对生产工作很有用。

您的回答也很有帮助,但我一直在寻找编写此类转换器时可能遇到的障碍。好的,如果您正在寻找障碍,请参见上文描述的模型子句、分析函数、查询因式分解(也称CTE)、集合运算符,如INTERSECT、MEMBER OF、PIVOT/UNPIVOT、,XMLQUERY支持。具有疯狂调用约定的各种函数。按汇总分组之类的多维数据集。您可以在此处找到解析器单元测试的示例:。