Oracle DDL导出

时间:2013-02-07 22:46:40

标签: oracle hsqldb ddl

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

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

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

有可能吗?

欢迎任何建议。

系统信息:

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

3 个答案:

答案 0 :(得分:2)

您可以使用DBMS_METADATA package和数据字典为对象生成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)吗?

答案 1 :(得分: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标准类型。所以类型可能不会造成问题。

答案 2 :(得分:0)

一个开源非活动项目完全相同。

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