【问题标题】:Generate oracle database data automatically via FKs whole hierarchy通过 FK 整个层次结构自动生成 oracle 数据库数据
【发布时间】:2015-05-25 09:57:28
【问题描述】:


是否有工具(适用于 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 表示日期systimestamp 表示时间戳强>。只有 FK 需要保持一致

它应该可以跨架构工作(您可以将 SCHEMA1.FK 转换为 SCHEMA2.TABLE)。
它应该提示用户输入带有检查约束(“IS NOT NULL”除外)的列,并向他们显示检查约束的文本。
它应该在插入后刷新(因为那里可能有触发器)。

【问题讨论】:

    标签: oracle testing mocking dbunit


    【解决方案1】:

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

    我求助于编写脚本来做到这一点。

    我不会给你代码,但这是我写的大纲:

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

    每次返回都会添加返回它的 XML 数据的 XMLTYPE。

    最终结果是一个显示递归数据的 XMLTYpe,采用一种您应该能够处理以递归插入的形式。

    然后将 XMLTYPE 写入文件。

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

    我花了几天时间才让这一切正常工作,但在我们需要在生产中重现问题时节省了大量时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多