所以,我有这个基于java的数据转换/屏蔽工具,我想在Oracle 10g上进行测试。使用Oracle 10g的好处在于,您可以获得大量样本模式,其中有些记录有50万条记录。模式是:SH,OE,HR,IX等。因此,我安装了10g,发现安装脚本在ORACLE_HOME/demo/scripts下。Oracle示例数据问题
我自定义了这些脚本,以便在批处理模式下运行。这解决了我需求的一半 - 为测试我的数据转换软件创建源数据。 需求的第二部分是我创建了不同名称下的相同模式(TR_HR,TR_OE等等),没有任何数据。这些模式将代表我的目标模式。因此,简而言之,我的软件将从模式中的表中获取数据,并将其载入到不同模式中的同一个表中。
现在,我在创建我的目标架构并清空它时遇到了两个问题。
- 我希望在批处理作业中使用。但是你得到的oracle脚本,示例模式名称是不可配置的。所以,我尝试创建一个脚本,用TR_OE替换OE,用TR_HR替换HR等等。然而,这种方法是令人恼火的,因为样本模式在创建方式上有点复杂; Oracle创建同义词,视图,物化视图,数据类型和很多奇怪的东西。
- 我希望目标模式(TR_HR,TR_OE,...)为空。但是一些模式有循环引用,这不允许我删除数据。唯一的解决方法似乎是删除某些外键,删除数据,然后添加约束。
是否有任何简单的方法来处理所有这些,没有这么大惊小怪?我需要一个复杂的数据集用于我的测试(复杂的如带有触发器的表,复杂的层次结构......例如,子表最多有5个子级的子表,引用IOT表和IOT表的父表这是指一个非物联网表等)。从数据集的角度来看,示例模式非常完美。我看到的唯一挑战就是自动化加载源模式的整个过程,然后创建目标模式并清空它们。感谢您的帮助和建议。
UPDATE
,你需要手动安装Oracle示例模式运行主脚本mkplug.sql。下面是从dmp文件加载模式向上行:
host imp "'sys/&&password_sys AS SYSDBA'" transport_tablespace=y file=&imp_file log=&imp_logfile datafiles='&datafile' tablespaces=EXAMPLE tts_owners=hr,oe,pm,ix,sh
嗯,我想修改该行本(修补上mkplug.sql和所有其他SQL文件路径相关的问题后):
host imp "'sys/&&password_sys AS SYSDBA'" rows=n transport_tablespace=y file=&imp_file log=&imp_logfile datafiles='&datafile' tablespaces=EXAMPLE tts_owners=hr,oe,pm,ix,sh
而且......它没有不是帮助。尽管rows = n属性:(
你只是想创建模式对象的脚本的替代版本,但不填充数据?你不能只删除所有的INSERT语句吗? – 2010-03-29 07:28:39
@Jeffrey nope。示例脚本sql从.dmp文件加载。 (数据文件)。示例脚本中没有插入语句。 – Jay 2010-03-29 07:44:48