将测试数据填充到oracle数据库

Pad*_* Vn 1 oracle10g

我有一个oracle数据库模式与更复杂的外键关系..我需要将测试数据填充到所有表..由于外键约束我发现很难找到表的层次结构..任何人都可以建议任何包或方法完成这个..

提前致谢

Jus*_*ave 6

如果您能让我们知道您希望输出采用何种形式,将会很有帮助.您可能希望从Frank Kulash的针对DBA_CONSTRAINTS表的层次结构查询示例开始,以显示路径.

如果您正在寻找一种方法来确定加载表的顺序,那就与dba.stackexchange上提出问题相同(不能将此问题标记为重复,因为DBA仍处于测试阶段).就像是

WITH    constraint_tree AS
(
    SELECT DISTINCT
        a.table_name    AS table_name
    ,   b.table_name    AS parent_table_name
    FROM        dba_constraints a
    LEFT OUTER JOIN dba_constraints b
    ON      a.r_constraint_name = b.constraint_name
    AND     a.owner         = b.owner
    WHERE       a.owner = 'SCOTT'
)
SELECT table_name, lvl
  FROM (
    SELECT a.*,
           rank() over (partition by table_name order by lvl desc) rnk
      FROM (
        SELECT  table_name, level lvl
          FROM  constraint_tree
         START WITH parent_table_name   IS NULL
       CONNECT BY NOCYCLE parent_table_name = PRIOR table_name
      ) a 
    ) b
 WHERE rnk = 1
 ORDER BY lvl, table_name
/
Run Code Online (Sandbox Code Playgroud)

将按照它们应该加载的顺序给你表(假设数据中没有循环).如果要并行加载,LVL则可以同时加载所有具有相同表的表.