通过FK的整个层次结构自动生成oracle数据库数据




是否有一个工具(适用于Oracle(可以从您想要的表开始为所有引用的表生成数据
示例:

ORDER has 3 not null FKs (CLIENT, PRODUCT, COUNTRY)
CLIENT has 2 not null FKs (COUNTRY, COMPANY)
  COMPANY has 2 not null FKs (COUNTRY, CONTINENT)
COUNTRY has 1 not null FK (CONTINENT)
PRODUCT has 5 not null FKs (MATERIAL, SIZE, ...
 MATERIAL has 2 not null FKs (...

等级制度还在继续
我只想在我的数据库中添加一个ORDER,以测试一些东西(使用DBUnit(,但我不想在100个表中添加值
生成的数据可以是伪数据:0表示数字X表示char/varcharssysdate表示日期systemtimestamp表示时间戳。只有FK需要保持一致

它应该跨架构工作(可以有SCHEMA1.FK到SCHEMA2.TABLE(。
它应该提示用户输入带有检查约束的列(而不是"IS NOT NULL"(,并向他们显示检查约束的文本
它应该在插入后刷新(因为那里可能有触发器(。

简短的回答-我不这么认为,至少在我需要这样做的时候不是这样。

我只好写一个剧本来做这件事。

我赢了;I don’我不给你代码,但这是我写的大纲:

  1. 一个通用函数,它接受表名、所有者和where子句作为内部参数,并从基于表的XMLAGG/XMLELEMENT查询中返回XMLTYPE数据
  2. 返回给定所有者/表的FK子表列表的函数
  3. 给定1和2,您可以构造一个递归过程,该过程有一个起点(表和数据/where子句(,然后向下树

每次返回都会添加XMLTYpe并返回其XMLdata。

最终结果是显示递归数据的XMLTYpe,其形式应该能够处理为递归INSERT。

然后将XMLTYpe写入一个文件。

几年前,我用类似的过程做了另一个类似的操作,但这是通过数据库链接复制数据的。

我花了几天时间才完成,但当我们需要在生产中重现问题时,我节省了很多时间来支持。

最新更新