Import avec les contraintes : ordonner les insert

Lors de certains imports, il n'est pas toujours possible de supprimer (ou désactiver) les contraintes car les données peuvent être rejetées ou bien parce que l'application tourne durant cette période. Il faut alors charger ses tables dans le bon ordre.
Voici un script permettant de définir l'ordre des tables à importer de tout le schéma USEREX afin d'éviter les erreurs du genre ORA-02291: integrity constraint () violated - parent key not found.


select max(nvl(Lvl, 0)) lvl2, d.Table_Name from
(  select level Lvl, Table_Name,
Nm, Fk, Delete_Rule  from (
select  A.Owner ,
A.Table_Name,
A.Constraint_Name Pk,
B.Constraint_Name Nm,
B.R_Constraint_Name Fk,
B.Delete_Rule
from all_constraints A,
all_constraints B
where A.Owner='USEREX'
And B.owner=a.owner
And B.table_name = A.table_name
And B.constraint_type In
('R')
) C 
start with c.Owner = 'USEREX'
connect by prior Pk = Fk 
) tl
right join all_tables d
on tl.table_name = d.table_name
where d.owner='USEREX'
group by d.table_name
order by lvl2


Vous pouvez ensuite utiliser les techniques classiques des imports/exports de données.




Vous n'avez pas trouver réponse à votre question ? Préciser votre recherche :

Catégories