Exemple : Extraire des données depuis les colonnes XML IBM DB2
Cet exemple montre comment extraire des données des colonnes de type XML d'une base de données IBM DB2 et les enregistrer dans un fichier CSV cible. Il illustre également comment utiliser des instructions XQuery intégrées dans du code SQL afin de récupérer du contenu XML de manière conditionnelle. Cet exemple nécessite l'accès à une base de données IBM DB2 sur laquelle vous disposez des droits nécessaires pour créer et remplir des tables.
Commençons par préparer la base de données afin qu’elle contienne effectivement des données XML. Cette opération peut être effectuée soit à l’aide d’un outil d’administration spécifique à votre base de données, soit directement dans MapForce. Pour effectuer cette opération directement dans MapForce, procédez comme suit :
1.Créez un nouveau mappage et cliquez sur l’onglet Requête BD.
2.Cliquez sur Connexion rapide (
) et suivez les étapes de l’assistant pour créer une nouvelle connexion à la base de données (voir également Exemples de connexion à une base de données).
3.Collez le texte suivant dans l'éditeur SQL. Cette requête SQL crée une table de base de données nommée ARTICLES et la remplit de données.
-- Create the table |
4.Cliquez sur le bouton Exécuter (
). Le résultat de l'exécution de la requête s'affiche dans la fenêtre Résultats de la requête. Si la requête s'exécute correctement, quatre lignes sont ajoutées à la table nouvellement créée.
Nous allons ensuite créer un mappage qui récupère de manière conditionnelle les données XML de la table ARTICLES créée ci-dessus. L'objectif est de récupérer, dans la colonne ARTICLES, uniquement les articles dont le prix est supérieur à 100.
Étape 1 : Ajouter la base de données
1.Cliquez sur l'onglet Mappage pour revenir au volet de mappage.
2.Dans le menu Insérer, cliquez sur Base de données, puis suivez les étapes de l'assistant pour vous connecter à la base de données.
3.Lorsque vous êtes invité à sélectionner les objets de la base de données, sélectionnez la table ARTICLES créée précédemment.

Étape 2 : Attribuer le schéma au champ de type XML
1.Cliquez avec le bouton droit sur l'élément ARTICLE du composant, puis sélectionnez Attribuer un schéma XML à un champ dans le menu contextuel.

2.Sélectionnez Fichier, puis recherchez le schéma suivant : <Documents>\Altova\MapForce2027\MapForceExamples\DocExamples\DB2xsd.xsd.
Étape 3 : Ajouter le composant SQL WHERE/ORDER
1.Dans le menu Insérer, cliquez sur SQL WHERE/ORDER.
2.Connectez la colonne de type XML ARTICLE à l’entrée du composant SQL WHERE/ORDER.

3.Dans le dialogue Propriétés SQL-WHERE/ORDER, saisissez le texte suivant :
XMLEXISTS('$a/Article[SinglePrice>100]' PASSING ARTICLE as "a") |

Le texte ci-dessus représente la partie « WHERE » de la requête SQL. Au moment de l’exécution du mappage, il sera combiné avec la partie « SELECT » affichée dans le dialogue. Cette instruction utilise la fonction XMLEXISTS et la syntaxe spécifique aux bases de données IBM DB2.
Étape 4 : Ajouter le fichier CSV cible
1.Dans le menu Insérer, cliquez sur Fichier texte.
2.Lorsque vous y êtes invité, sélectionnez Utiliser un traitement simple pour les fichiers CSV standard... , puis cliquez sur Continuer.
3.Cliquez trois fois sur Ajouter champ pour ajouter trois champs qui stockeront respectivement la référence, le nom et le prix de l'article. Laissez tous les autres paramètres tels quels.
4.Tracez les connexions de mappage comme indiqué ci-dessous.

Vous pouvez désormais prévisualiser le résultat du mappage en cliquant sur le volet Sortie. Comme prévu, seuls les articles dont le prix est supérieur à 100 s'affichent dans la sortie.