我们在生产中使用Oracle,但在我们公司中,很难在开发环境中安装。
有没有办法让Perl(或任何其他语言)通过DBI模块(或任何其他语言的等效模块将SQL命令发送到数据库)发送原始SQL语句,这些语句从Oracle SQL转换为MySQL或SQLite还是别的什么?
因此,应用程序会认为它正在与Oracle交谈,但实际上是在与另一个更容易安装的开源/免费数据库进行交流。
答案 0 :(得分:3)
这是不可能的。其他数据库引擎无法处理Oracle查询。 Oracle中最简单的查询,例如,如果您想获得当前用户的名称:
select user from dual
此查询使用DUAL
表,该表在任何其他DBMS中都不存在。还有许多特定于Oracle的构造(CONNECT BY
,MINUS
等),这些构造无法在其他引擎中处理。
在您的情况下,最好的方法是在虚拟机中创建一个Oracle安装,然后将其映像复制到另一个虚拟机以便工作。
答案 1 :(得分:1)
ANSI SQL是您所指的抽象层。
假设目标数据库中存在所有表,并且RDBMS支持ANSI SQL,那么您的查询将完美地传输到另一个数据库。
如果您希望使用标准中未定义的内容,则无法正常使用。
这是标准Oracle 11.2G position的链接。
在谈到Oracle时,他们解决问题的方法是提供Oracle Database Gateways。