2015-05-25 74 views
0


是否有一個工具(用於Oracle)會從所需表格開始向所有引用表生成數據。
例子:通過FK全層次自動生成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爲字符/ VARCHAR處理SYSDATE日期SYSTIMESTAMP爲時間戳。只有FKs需要一致

它應該跨模式工作(您可以使SCHEMA1.FK到SCHEMA2.TABLE)。
它應該提示用戶輸入帶有檢查約束(不是'IS NOT NULL')的列,並向他們顯示檢查約束的文本。
它應該刷新後插入(因爲也許有觸發器)。

回答

1

簡短的回答 - 我不這麼認爲,至少不是在我需要這樣做的時候。

我採取了寫腳本來做到這一點。

我贏了;噸給你的代碼,但這裏是我在提綱中寫道:

  1. 接受了一個表名,所有者和where子句爲inpits,並返回數據的XMLTYPE一個泛型函數來自表格上基於XMLAGG/XMLELEMENT的查詢。
  2. 返回給定所有者/表的FK子表的列表的函數。
  3. 給定1和2,您可以構建一個具有起點(表和數據/ where子句)的遞歸過程,然後沿樹下降。

每次返回增加了XMLTYPE返回它的XMLDATA。

最終的結果是示出了遞歸數據的XMLTYPE,在你應該能夠處理以遞歸方式插入表單。

然後將XMLTYPE寫入文件。

我在幾年前做了一個類似的過程,類似的過程,但這複製數據跨數據庫鏈接。

我花了幾天時間才完成所有工作,但在需要重現生產問題時節省了大量時間。