是否有任何抽象层使数据库看起来像Oracle?

时间:2016-01-08 16:54:13

标签: mysql oracle perl abstraction-layer

我们在生产中使用Oracle,但在我们公司中,很难在开发环境中安装。

有没有办法让Perl(或任何其他语言)通过DBI模块(或任何其他语言的等效模块将SQL命令发送到数据库)发送原始SQL语句,这些语句从Oracle SQL转换为MySQL或SQLite还是别的什么?

因此,应用程序会认为它正在与Oracle交谈,但实际上是在与另一个更容易安装的开源/免费数据库进行交流。

2 个答案:

答案 0 :(得分:3)

这是不可能的。其他数据库引擎无法处理Oracle查询。 Oracle中最简单的查询,例如,如果您想获得当前用户的名称:

select user from dual

此查询使用DUAL表,该表在任何其他DBMS中都不存在。还有许多特定于Oracle的构造(CONNECT BYMINUS等),这些构造无法在其他引擎中处理。
在您的情况下,最好的方法是在虚拟机中创建一个Oracle安装,然后将其映像复制到另一个虚拟机以便工作。

答案 1 :(得分:1)

ANSI SQL是您所指的抽象层。

假设目标数据库中存在所有表,并且RDBMS支持ANSI SQL,那么您的查询将完美地传输到另一个数据库。

如果您希望使用标准中未定义的内容,则无法正常使用。

这是标准Oracle 11.2G position的链接。

在谈到Oracle时,他们解决问题的方法是提供Oracle Database Gateways