Было бы полезно, если бы вы сообщили нам, какую форму вы хотите получить. Возможно, вы захотите начать с примера Фрэнка Кулаша иерархического запроса к DBA_CONSTRAINTS
таблице , чтобы показать путь.
Если вы ищете способ определить порядок загрузки таблиц, это идентично вопросу, заданному в dba.stackexchange (невозможно пометить этот вопрос как дубликат, поскольку администратор базы данных все еще в бета-версии). Что-то вроде
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
/
выдаст вам таблицы в порядке их загрузки (при условии, что в данных нет циклов). Если вы хотите загружать параллельно, все таблицы с одинаковым LVL
могут быть загружены одновременно.