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

SQL Server 2005 Integration Services et XML

SQL Server 2005 Integration Services et XML


précédentsommairesuivant

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

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

Le tronc commun à ces deux opérations est la création de l'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étrer notre composant XML Task.

III-A. Merge de 2 fichiers XML

Nous disposons de 2 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 3ème 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éfault, 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 : le dit fichier ssis-xml.xml
  • Le type du second opérande : une connexion de fichier, nous diposons 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ésultas 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 2 fichiers XML

La comparaison de 2 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.