Tables d'exceptions de chargement

Une table d'exception de chargement est un rapport consolidé de toutes les lignes qui ont violé les règles d'index unique, les contraintes de plage et les politiques de sécurité au cours d'une opération de chargement. Vous spécifiez une table d'exceptions de chargement en utilisant la clause FOR EXCEPTION de la commande LOAD.

Restriction : Une table d'exceptions ne peut pas contenir de colonne d'identité ou tout autre type de colonne générée. Si une colonne d'identité est présente dans la table primaire, la colonne correspondante dans la table d'exception ne doit contenir que les attributs de type, de longueur et de nullité de la colonne. En outre, la table d'exception ne peut pas être une table partitionnée en plages ou une table organisée en colonnes, ni disposer d'un index unique. En outre, vous ne pouvez pas spécifier une table d'exceptions si l'une des conditions suivantes est remplie :
  • La table cible utilise la sécurité LBAC et possède au moins une colonne XML
  • La table cible est partitionnée en plages et possède au moins une colonne XML

La table d'exceptions utilisée avec l'utilitaire de chargement est identique aux tables d'exceptions utilisées par l'instruction SET INTEGRITY. Il s'agit d'un tableau créé par l'utilisateur qui reflète la définition du tableau chargé et comprend quelques colonnes supplémentaires.

Vous pouvez affecter une table d'exception de chargement à l'espace de table où réside la table à charger ou à un autre espace de table. Dans les deux cas, affectez la table d'exception de chargement et la table chargée au même groupe de partition de base de données et assurez-vous que les deux tables utilisent la même clé de distribution. En outre, assurez-vous que la table d'exception et la table en cours de chargement ont le même identifiant de carte de partition ( SYSIBM.SYSTABLES.PMAP_ID ), qui peut potentiellement être différent au cours de l'opération de redistribution (opération d'ajout/suppression de partition de base de données).

Quand utiliser un tableau d'exceptions ?

Utilisez une table d'exception lorsque vous chargez des données qui ont un index unique et qui pourraient avoir des enregistrements en double. Si vous ne spécifiez pas de table d'exception et que des enregistrements en double sont trouvés, l'opération de chargement se poursuit et seul un message d'avertissement est émis concernant les enregistrements en double supprimés. Les enregistrements en double ne sont pas enregistrés.

Une fois l'opération de chargement terminée, vous pouvez utiliser les informations de la table des exceptions pour corriger les données erronées. Vous pouvez ensuite insérer les données corrigées dans le tableau.

Les lignes sont ajoutées aux informations existantes dans le tableau des exceptions. Comme aucune vérification n'est effectuée pour s'assurer que la table est vide, de nouvelles informations sont simplement ajoutées aux lignes non valides des opérations de chargement précédentes. Si vous ne voulez que les lignes invalides de l'opération de chargement en cours, vous pouvez supprimer les lignes existantes avant d'invoquer l'utilitaire. Par ailleurs, lorsque vous définissez une opération de chargement, vous pouvez spécifier que la table des exceptions enregistre l'heure à laquelle une violation est découverte et le nom de la contrainte violée.

Étant donné que chaque événement de suppression est enregistré, le journal peut se remplir pendant la phase de suppression de la charge si un grand nombre d'enregistrements ne respectent pas une condition d'unicité.

Les lignes rejetées en raison de données non valides avant la construction d'un index ne sont pas insérées dans la table d'exceptions.