Bonjour,
Voilà, j'ai une table de codification qui a changé et je dois faire une moulinette
permettant de remplacer l'ancienne valeur du champ en question par la nouvelle.
Un petit exemple :
Ma première solution est de parcourir la table USER_TABLES/USER_TAB_COLUMNS pour connaître les tables qui contient la colonne Codif.Table de codif (avant modif) :
Code - Libelle
C1 - Codif 1
C2 - Codif 2
C3 - Codif 3
Table (avec + de 50 millions de lignes)
Code - Libelle - Prix - Taux - Codif - ...
1 - Ticket1 - 12.55 - 19.6 - C1 - ...
...
Table de correspondance :
AncCode - NouvCode
C1 - C12
C2 - C220
C3 - C56
Jusque la, pas de problème sauf que :
Je vais tomber sur des tables qui contiennent énormément d'enregistrements (+ de 50 millions)
et je compte mettre à jour la table comme ceci (Information importante : Pas de PK ni d'index sur la colonne Codif) :
=> Je n'ai pas encore fait le test mais je pense que ça risque :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE NomTable SET Codif = NewCodif WHERE Codif = OldCodif; COMMIT;
- de remonter une exception car nombre de lignes est trop important
- de mettre énormément de temps !!!!
Que me conseillez-vous ? Quels sont vos conseils ?
Partager