4

我正在尝试在 HSQL 数据库中重新创建一个 oracle 数据库。这是为了在本地开发人员系统上进行更好的单元测试。

我需要知道的是我可以在 oracle 服务器/客户端中使用什么工具/命令,它可以为我提供 oracle 数据库中所有对象(表、同义词、视图等)的所有 DDL 命令。

我计划通过创建的 DDL 命令并尝试将这些命令转换为 HSQL 兼容的命令。

可能吗?

任何建议都将受到欢迎。

系统信息:

Oracle DB: Oracle enterprise server 11g R2. 
HSQL DB: hsql 2.2.9
4

3 回答 3

2

您可以使用该DBMS_METADATA和数据字典来为您的对象生成 DDL。例如,为模式中的每个表生成 DDL

declare
  l_ddl clob;
begin
  for t in (select * from user_tables)
  loop
    l_ddl := dbms_metadata.get_ddl( 'TABLE', t.table_name, USER );
    <<do something with l_ddl>>
  end loop;
end;

您确定使用与您真正要部署的数据库完全不同的数据库进行测试有意义吗?即使您将 DDL 转换为最接近的模拟,根据您连接的数据库,您似乎很可能会在某些测试中获得不同的结果。您确定不能在开发人员的机器上安装 Oracle(如果您主要关注许可,则可能是 Oracle XE)?

于 2013-02-07T23:07:28.307 回答
1

有很多产品可以提供帮助。

开源: http ://www.liquibase.org/manual/formatted_sql_changelogs

商业免费试用: http: //www.devart.com/dbforge/oracle/schemacompare/new-export-oracle-schema.html

如果您使用通常仅设计用于 Oracle 数据库的工具,您可能会得到相当多需要转换的非标准 Oracle DDL。跨平台工具更有可能减少工作量。

在 ORA 兼容模式下使用 HSQLDB 时,它可以将 DDL 中的一些 Oracle 类型转换为类似的 SQL 标准类型。所以这些类型可能不会造成问题。

于 2013-02-07T23:17:52.863 回答
0

一个开源非活动项目做完全相同的事情。

http://schemamule.sourceforge.net/index.html

于 2013-11-15T06:16:57.683 回答