Correspondance entre bases de données avec gestion des exceptions

Les processus métier essentiels dépendent de données fiables, et les administrateurs de bases de données, ainsi que les autres analystes de données, souhaitent être certains de l'intégrité des informations stockées dans les tables de bases de données. Lors d'opérations ETL (Extraction, Transformation, Chargement) automatisées ou d'autres tâches d'importation de bases de données, des données incorrectes peuvent être rencontrées, ce qui compromet la réussite de la procédure. Altova MapForce intègre une gestion des exceptions de base de données qui permet de revenir en arrière et de corriger les données affectées en cas d'erreur, et permet, optionnellement, de poursuivre le reste de la transformation de la base de données.

Par exemple, une erreur dans un seul enregistrement ne doit pas nécessairement empêcher la suite de l'exécution d'une transformation de données, notamment lorsque certaines contraintes de la base de données empêchent l'insertion ou la mise à jour de données incorrectes.

La gestion des exceptions de la base de données englobe toutes les modifications apportées au composant de la base de données au sein de transactions qui peuvent être annulées en cas d'erreur. Les utilisateurs peuvent choisir de poursuivre le reste de la configuration ou d'arrêter l'exécution. Les transactions peuvent être activées au niveau du composant de la base de données, au niveau de la table, ou pour les procédures stockées.

La gestion des exceptions peut même être combinée à la journalisation des résultats de la base de données (traçage) afin de créer un enregistrement des erreurs qui se produisent lors du traitement automatisé.

Voyons comment cela fonctionne.

Le dossier "Exemples MapForce" contient une base de données et une base de données SQLite qui illustrent la gestion des transactions et les opérations de restauration. Bien entendu, ces fonctionnalités sont prises en charge pour toutes les bases de données relationnelles courantes, et permettent de réaliser des tâches courantes comme la conversion de PostgreSQL vers SQLite, la transformation de XML vers SQL Server, la conversion de JSON vers Access, et ainsi de suite.

Cette opération de transfert de données copie les informations de deux tables de base de données vers de nouvelles tables de structure similaire, à l'exception d'une différence importante. Dans la table "new_addresses" de la base de données cible, les champs "is_shipping" et "is_billing" ne peuvent pas contenir de valeurs nulles, alors qu'ils pouvaient l'être dans la table "addresses" de la base de données source. Cela signifie que des erreurs se produiront pendant l'exécution de l'opération de transfert si des valeurs manquantes sont rencontrées.

Nous allons examiner trois situations, en utilisant les différentes options de gestion des exceptions des bases de données pour traiter les erreurs de différentes manières

  • En cas de première erreur, annuler toutes les modifications et interrompre l'exécution du processus

  • Annuler uniquement la transaction qui a généré l'erreur, puis continuer

  • Annuler la dernière transaction et continuer

Restaurer toutes les modifications

Dans la première situation, nous souhaitons appliquer la gestion des exceptions de la base de données afin de laisser la base de données cible complètement inchangée en cas d'erreur survenant pendant l'exécution de la transformation. Pour mettre en œuvre cette option, nous pouvons ouvrir la fenêtre de propriétés du composant de la base de données cible et activer la gestion des transactions :

Nous pouvons maintenant exécuter la transformation en cliquant sur le bouton "Sortie" situé en bas du panneau de transformation, ce qui générera le script d'exécution SQL. Ensuite, sélectionnez l'option "Exécuter le script SQL" dans le menu "Sortie" situé au-dessus de la fenêtre du script

Lorsqu'une première erreur se produit pendant l'exécution, une fenêtre de dialogue s'affiche, permettant de confirmer ou de modifier les paramètres de la transaction que nous avons sélectionnés précédemment

Nous cliquerons simplement sur "OK" pour confirmer nos paramètres initiaux. L'exécution de la cartographie s'arrête, et la fenêtre "Messages" décrit l'erreur :

Nous pouvons utiliser la fenêtre de requête de base de données intégrée à MapForce pour sélectionner et examiner les tables "new_users" et "new_addresses". Nous nous attendons à ce que les deux soient vides :

Cela permet de vérifier que toutes les données insérées avant l'erreur ont été annulées, c'est-à-dire supprimées de la base de données.

Pendant l'exécution automatisée, sous le contrôle du serveur MapForce, les paramètres de transaction du composant seraient utilisés sans interruption.

Annuler la transaction précédente et continuer

Imaginez un cas où un très gros fichier de données externes doit être importé dans une base de données, par exemple, dix mille enregistrements ou plus. Nous supposons que le fichier externe est valide, mais si quelques enregistrements contiennent des données incorrectes, nous souhaitons importer tous les enregistrements corrects et enregistrer les erreurs. Il s'agit de la situation 2 de gestion des exceptions de base de données mentionnée ci-dessus, combinée à la traçabilité de la base de données décrite dans un article précédent.

Pour mettre en œuvre cette option de gestion des exceptions de base de données pour la table "new_addresses", nous cliquons sur le bouton des actions de la table et sélectionnons les propriétés suivantes :

Maintenant, nous pouvons générer un nouveau script SQL et l'exécuter en utilisant la même commande "Exécuter le script SQL" mentionnée ci-dessus. La fenêtre "Messages" enregistrera plusieurs erreurs. Nous pouvons relancer la requête SQL dans la fenêtre "Requête DB" pour afficher les données qui ont été correctement mappées :

De plus, nous avons généré un fichier de trace XML. L'image ci-dessous montre une vue partielle dans la fenêtre de l'éditeur XML XMLSpy pour un seul message d'erreur, mis en évidence à la ligne 54 :

Un fichier de trace comme celui-ci permet de trouver et de corriger facilement quelques enregistrements erronés parmi des dizaines de milliers !

Annuler la dernière transaction et continuer

La situation 3 de la gestion des exceptions de la base de données répond à cet impératif métier : si l'insertion d'une adresse échoue, alors l'enregistrement utilisateur parent ne doit pas non plus être inséré, mais le reste de la procédure de mappage doit continuer.

Cet exemple est décrit en détail dans l'aide en ligne de MapForce, installée automatiquement avec MapForce, ainsi que dans tous les fichiers de démonstration présentés ici. Nous vous invitons à télécharger une version d'essai gratuite et à étudier ce scénario, ou à vous lancer directement dans la mise en œuvre de la gestion des exceptions de base de données dans vos propres mappings de base de données !