我正在尝试在HSQL数据库中重新创建oracle数据库。这是为了在本地开发人员系统上实现更好的单元测试。
我需要知道的是,我可以在oracle服务器/客户端中使用任何工具/命令,它们可以为oracle数据库中的所有对象(表、同义词、视图等)提供所有DDL命令。
我计划遍历创建的DDL命令,并尝试将这些命令转换为HSQL兼容命令。
有可能吗?
欢迎提出任何建议。
系统信息:
Oracle DB: Oracle enterprise server 11g R2.
HSQL DB: hsql 2.2.9发布于 2013-02-08 07:07:28
您可以结合使用DBMS_METADATA package和数据字典来为您的对象生成动态链接库。例如,为模式中的每个表生成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-08 07:17:53
有相当多的产品可以提供帮助。
OpenSource: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-11-15 14:16:58
一个开源的非活动项目做了完全相同的事情。
http://schemamule.sourceforge.net/index.html
https://stackoverflow.com/questions/14762526
复制相似问题