IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

SQL Server 2005 Integration Services et XML


précédentsommairesuivant

III. Petits plus XML Task : Merge et comparaison de deux fichiers XML

Dans cette partie, nous allons effectuer deux opérations. La première consiste à merger, regrouper deux XML en un seul fichier XML. Ceci peut-être utile en amont d'un import quelconque. De même, nous allons voir comment comparer deux fichiers XML afin d'en dégager les différences.

Le tronc commun à ces deux opérations est la création du XML task. Pour cela, au niveau de l'onglet Control Flow ou flux de contrôle, nous allons ajouter une tâche XML comme suit :

Image non disponible


Remarque : L'erreur symbolisée par la petite croix rouge est normale. Nous n'avons pas encore paramétré notre composant XML Task.

III-A. Merge de deux fichiers XML

Nous disposons de deux fichiers XML que nous souhaitons regrouper en un seul. Nous allons dupliquer notre exemple XML et nous allons paramétrer notre tâche de telle sorte que le regroupement se fasse dans un 3e fichier résult.xml. Bien entendu, il est possible de faire ce regroupement dans l'un des deux fichiers sources au risque de perdre l'original.

Par défaut, notre XML Task ressemble à ceci :

Image non disponible


C'est cet écran que nous allons paramétrer. Il nous faut définir :

  • Le type d'opération : Merge
  • Notre type du premier opérande : une connexion de fichier
  • Notre premier opérande : ledit fichier ssis-xml.xml
  • Le type du second opérande : une connexion de fichier, nous disposons d'un fichier XML
  • Le second opérande : notre fichier XML ssis-xml2
  • Notre type de destination : une connexion de fichier, nous allons écrire les résultats dans notre fichier result.xml
  • Le type de destination : une connexion de fichier


Nous obtenons alors ceci :

Image non disponible


Que nous validons. Puis nous exécutons notre opération de merge comme suit :

Image non disponible


Notre opération a réussi :

Image non disponible


Voyons ce que donne le résultat de notre fichier xml result.xml :

results.xml
Sélectionnez
<produits>
  <produit>
    <libelle>Brosse a dents</libelle>
    <nb>1</nb>
    <prix>2</prix>
  </produit>
  <produit>
    <libelle>lessive</libelle>
    <nb>2</nb>
    <prix>16</prix>
  </produit>
  <produit>
    <libelle>Mouchoirs</libelle>
    <nb>10</nb>
    <prix>3</prix>
  </produit>
  <produit>
    <libelle>bonbons</libelle>
    <nb>2</nb>
    <prix>5.99</prix>
  </produit>
  <produit>
    <libelle>fruits</libelle>
    <nb>5</nb>
    <prix>1</prix>
  </produit>
    <produit>
      <libelle>Brosse a dents</libelle>
      <nb>1</nb>
      <prix>2</prix>
    </produit>
    <produit>
      <libelle>lessive</libelle>
      <nb>2</nb>
      <prix>16</prix>
    </produit>
    <produit>
      <libelle>Mouchoirs</libelle>
      <nb>10</nb>
      <prix>3</prix>
    </produit>
    <produit>
      <libelle>bonbons</libelle>
      <nb>2</nb>
      <prix>5.99</prix>
    </produit>
    <produit>
      <libelle>fruits</libelle>
      <nb>5</nb>
      <prix>1</prix>
    </produit>
</produits>

III-B. Comparaison de deux fichiers XML

La comparaison de deux fichiers XML correspond à l'opération Diff dans une tâche XML. Notre second fichier XML permettant la comparaison sera l'initial de notre exemple légèrement modifié comme suit :

 
Sélectionnez
<produits>
    <produit>
        <libelle>Brosse a dents</libelle>
        <nb>1</nb>
        <prix>4</prix>
    </produit>
    <produit>
        <libelle>lessive</libelle>
        <nb>4</nb>
        <prix>16</prix>
    </produit>
    <produit>
        <libelle>Mouchoir</libelle>
        <nb>10</nb>
        <prix>3</prix>
    </produit>
    <produit>
        <libelle>Chocolat</libelle>
        <nb>4</nb>
        <prix>5.99</prix>
    </produit>
    <produit>
        <libelle>fruits</libelle>
        <nb>5</nb>
        <prix>1</prix>
    </produit>
</produits>


Pour paramétrer cette comparaison de fichier, il nous faut définir :

  • Le type d'opération : Diff
  • Note type de premier opérande : connexion de fichier
  • Notre premier opérande : ssis-xml.xml
  • Note type de second opérande : connexion de fichier
  • Notre second opérande : ssis-xml2.xml
  • SaveDiffDiagram : true
  • DiffDIagramType : connexion de fichier
  • DiffDiagramDestination : result.xml

Nous obtenons alors via ce paramétrage ceci :

Image non disponible


Nous validons et exécutons cette nouvelle tâche comme expliqué précédemment. Nous obtenons alors ceci dans notre fichier result.xml :

 
Sélectionnez
<?xml version="1.0" encoding="utf-16"?>
<xd:xmldiff version="1.0" srcDocHash="5237581266046920043" options="None" fragments="no" xmlns:xd="http://schemas.microsoft.com/xmltools/2002/xmldiff">
  <xd:node match="1">
    <xd:node match="1">
      <xd:node match="3">
        <xd:change match="1">4</xd:change>
      </xd:node>
    </xd:node>
    <xd:node match="2">
      <xd:node match="2">
        <xd:change match="1">4</xd:change>
      </xd:node>
    </xd:node>
    <xd:node match="3">
      <xd:node match="1">
        <xd:change match="1">Mouchoir</xd:change>
      </xd:node>
    </xd:node>
    <xd:node match="4">
      <xd:node match="1">
        <xd:change match="1">Chocolat</xd:change>
      </xd:node>
      <xd:node match="2">
        <xd:change match="1">4</xd:change>
      </xd:node>
    </xd:node>
  </xd:node>
</xd:xmldiff>


Et si vous comparez minutieusement, c'est exactement les différences qui ressortent de cette opération.


précédentsommairesuivant

Copyright © 2011 Fleur-Anne BLAIN. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.