Altova MapForce 2023 Enterprise Edition

L'action de table Ignorer si... est utilisée pour empêcher certains enregistrements dans une table de base de données d'être mis à jour, sur la base d'une condition définie. L'action Ignorer si... est uniquement significative lorsqu'elle est utilisée en combinaison avec une autre action de table de base de données (comme l'action Insérer Rest). Par exemple, lors du mappage de données depuis un XML de source dans une base de données cible, vous pouvez configurer une condition Ignorer si... pour vérifier si un certain champ dans le XML de source est égal à un champ dans l'enregistrement de base de données de cible (généralement, une valeur de clé primaire). Si la condition Ignorer si... st vraie (donc, si les deux champs sont égaux), l'enregistrement de base de données sera ignoré lorsque le mappage est exécuté, et que la prochaine action définie (Insérer Rest, par exemple) sera exécutée.

 

Cet exemple vous montre comment insérer des enregistrements dans une table de base de données basée sur le résultat de la condition Ignorer si.... L'exemple utilise les fichiers suivants :

 

altova-cmpy-extra.xml — contient les données de source à insérer dans la base de données.

Altova_Hierarchical.xsd — le schéma utilisé pour valider le fichier d'instance ci-dessus.

AltovaTarget.mdb — la base de données à mettre à jour.

 

Tous de fichiers sont disponibles dans le dossier <Documents>\Altova\MapForce2023\MapForceExamples\. Ci-dessous, le chemin complet vers les fichiers sera omis, par mesure de simplicité.

 

Le mappage dans cet exemple modifie un fichier de base de données d'échantillon. Il est fortement recommande de sauvegarder la base de données originale et de commencer avec une nouvelle copie avant de suivre les étapes ci-dessous. Cela garantit que les exemples originaux ne sont pas contournés et que vous obtenez les mêmes résultats ci-dessous. Pour plus d'informations, voir Exécuter des mappages qui modifient les bases de données.

 

L'objectif du mappage est le suivant :

 

Si des enregistrements Person avec la même PrimaryKey existent dans XML source et la table Person cible, aucune action ne doit être supprimée de la table Person (elle peut donc être ignorée).

Si un des enregistrements Person qui ne satisfait pas à la condition mentionnée ci-dessus existe dans la table Person, aucune action ne doit être entreprise non plus.

Les enregistrements provenant du XML de source qui ne possèdent pas de contrepartie (aucune clé primaire) dans la table Person doivent être traités en tant que Nouveau et Inséré dans la table Person avec une clé primaire.

 

Pour atteindre l'objectif de mappage, nous allons suivre les étapes suivantes.

 

Étape 1 : Insérer le composant XML source

Dans le menu Insérer, cliquer sur Schéma/Fichier XML, et chercher Altova_Hierarchical.xsd. Lorsque vous êtes invité à fournir un fichier d'instance, chercher altova-cmpy-extra.xml.

 

Étape 2 : Insérer la base de données cible

Dans le menu Insérer, cliquer sur Base de données, et suivre les étapes de l'assistant pour vous connecter à Altova.sqlite. Voir Ajouter une Base de données.

 

Étape 3 : Tirer les connexions

Tracer les connexions de mappage comme indiqué ci-dessous.

mf_db_ignoreif_01

 

Étape 4 : Configurer les actions "Ignorer si... Insérer Rest"

1.Dans le composant de cible, cliquer sur la touche Action: Insérer (tbl-act-icon) située à côté de la table "Person".

2.À côté de Action sur enregistrement, choisir Ignorer si... . Cela change l'action de table de la base de données en une action d'ignorer. C'est-à-dire que l'enregistrement actuel sera uniquement ignoré lorsqu'une condition sera satisfaite (voir étape suivante).

3.À côté de PrimaryKey, choisir la valeur equal, comme indiqué ci-dessous. Cela définit la condition ignorer : c'est-à-dire, que l'enregistrement de la base de données sera ignoré uniquement lorsque sa valeur PrimaryKey sera égale à la valeur PrimaryKey provenant du mappage.

mf_db_ignoreif_02

4.En option, cocher la case NULL equal. Dans cet exemple, cette case à cocher n'est pas pertinente car ni le champ PrimaryKey se trouvant dans le XML de source ni le champ PrimaryKey dans la base de données ne contient de valeurs null. Néanmoins, vous devriez cocher cette case si vos données contiennent des valeurs null, et si vous souhaitez traiter ces valeurs comme égales ; sinon, vous risquez d'obtenir des résultats indésirables. Pour plus d'informations, voir Gérer des valeurs null dans les actions de table de base de données.

5.Cliquer sur Apposer action. Cela permet d'ajouter une nouvelle action à la droite de l'action existante Ignorer si. Configurer une nouvelle action comme Insérer Rest, avec la clé primaire définie comme max() + 1, tel qu’affiché ci-dessous :

mf_db_ignoreif_03

Dans les images ci-dessus, les actions de Table de base de données ont été configurées conformément aux objectifs du mappage. C'est-à-dire que seule si la condition Ignore If... est satisfaite, l'enregistrement sera sauté ; sinon, il sera inséré. L'option "valeur mappée" spécifie que des valeurs provenant du mappage seront utilisées pour remplir tous les champs de l'enregistrement. L'option max() + 1 génère une valeur clé primaire unique pour l'enregistrement.

 

6.Cliquer sur OK pour fermer le dialogue. Veuillez noter que, une fois que vous serez retourné au mappage, la touche Action: Le bouton Insert tbl-act-icon est maintenant transformé en une touche Action: Bouton Ignorer ; Insérer ( ). Cela indique que l'action ignorer et insertion est configurée pour avoir lieu pour cette table.

 

Étape 5 : Consulter le mappage et mettre à jour la base de données

Cliquer sur l'onglet Sortie pour consulter le mappage. Un script SQL est généré, contenant les actions à exécuter par rapport à la base de données. Le script n'a pas encore modifié la base de données ; elle est uniquement destinée à la prévisualisation. Pour exécuter le script par rapport à la base de données :

 

Dans le menu Sortie, cliquer sur Exécuter Script SQL.

 

Note :L'exécution du script SQL directement depuis MapForce est juste un des moyens mis à disposition pour mettre à jour la base de données, voir aussi Exécuter des mappages qui modifient des bases de données.

 

Si vous ouvrez la table "Person" dans l'onglet de requête de BD de MapForce (voir Parcourir et interroger des bases de données), vous pouvez voir le résultat du mappage comme suit :

 

Tous les enregistrements de base de données qui avaient des clés correspondantes dans le fichier XML n'ont pas satisfait la condition Ignorer si... et sont restés non-touchés. Dans l'exemple, des enregistrements avec la clé primaire 1, 2, 3, 4 et 5.

Tous les enregistrements de base de données qui n'avaient pas de clés correspondantes dans le fichier XML n'ont pas satisfait la condition Ignorer si... mais restent tout de même non-touchés. Dans l'exemple, des enregistrements avec la clé primaire 6, 7, 8, 9, 10, 11, 12 et 13.

De nouveaux enregistrements ont été insérés dans la table "Person" (lorsque la clé n'existait pas encore dans la base de données). Des exemples sont des enregistrements avec la clé primaire 30 et 31 dans le fichier XML de source. Ceux-ci étaient insérés dans la base de données avec la nouvelle clé primaire 22 et 23, respectivement.

mf_db_ignoreif_04

La table "Person" après avoir mis à jour la base de données

© 2017-2023 Altova GmbH