1 - Pour commencer télécharger et installer 7zip :

http://www.7-zip.org/download.html


2 - Utiliser un outil tiers via une ligne de commande (exemple avec 7zip) Via le composant Execute Task Component (Tâche d'exécution de processus) de SSIS, il est possible d'appeler n'importe quel fichier .bat contenant des commandes MS-DOS.

Variante A : Via une commande MS-DOS, écrire directement le texte de la commande dans le composant sous BIDS, comme ceci :

Paramétrer le composant d'exécution de processus avec 7zip sous SSIS
Note : Cette commande utilise l'utilitaire 7zip, l'exemple peut aussi utiliser un autre outil appelable via ligne de commande)

Variante B : Utiliser directement l'appel à un fichier .BAT contenant un code du type :
7zip.exe a C:\DOSSIER\Fichier_COMPRESSE.zip C:\DOSSIER\Fichier_A_Zipper.csv

Bien sûr les options sont paramétrables et vous pouvez choisir le mode de compression et le format.

Pour aller plus loin et zipper tous les fichiers contenus dans un dossier avec le nom du fichier source, le nom du fichier compresse, le filtre appliquer sur les fichiers à prendre en compte et le dossier de travail paramétrable

Créer 4 variables :
  • Variable_Fichier_Source
  • Variable_Fichier_Compresse
  • Variable_Dossier_Travail
  • Variable_FileSpec

Création de variables sous SSIS

Notons que FileSpec est le nom de la variable du composant ForEach File de SSIS qui permet de choisir le filtre de sélection des fichiers à énumérer. La variable Variable_Fichier_Source sera instanciée depuis le composant Foreachfile donc aucune valeur par défaut n'est à renseigner. Paramétrer ensuite la variable Variable_Fichier_Compresse comme suit (pour afficher la fenêtre d'édition des paramètres, sélectionner la variable et appuyer sur F4. La vairable Variable_Dossier_Travail contient quant à elle le dossier cible contenant les fichiers à compresser au format ZIP.


Paramétrage de la variable Variable_Fichier_Compresse
La variable dans cet exemple y est paramétrée pour ajouter la date du jour en suffixe et l'extension .ZIP. Paramétrage d'une variable SSIS avec l'option EvaluateAsExpression = True

Ouvrir le composant ForEach File et renseigner les propriétés suivantes :
  • Directory avec la variable Variable_Dossier_Travail
  • FileSpec avec la variable Variable_FileSpec

Paramétrer l'Onglet Collection du composant SSIS ForEach File avec des variables

Mapper le nom de fichier scanné dans la variable Variable_Fichier_Source

Mapper une variable sur le nom de fichier dans le composant SSIS ForEach File

Ajouter le composant d'exécution de processus dans la boucle ForEach File

Le nom de fichier en cours contenu dans la variable Variable_Fichier_Source y sera utilisé.
Composant d'exécution de process intégré dans une boucle Foreach File

Paramétrer le composant d'exécution de processus pour fonctionner dynamiquement en utilisant le contenu des variables

Paramétrer dynamiquement le composant d'éxécution de processus SSIS en utilisant des varirables
Le résultat : les fichiers commmençant par 2010* et avec l'extension son t compressés au format ZIP.


Résultat de la compression des fichiers CSV après exécution du package Exemple

Liste des commandes et des options de 7z en ligne de commande :

Cette liste est disponible en tapant 7z -h dans une fenêtre MS-DOS, voici le résultat :

7-Zip 4.42 Copyright (c) 1999-2006 Igor Pavlov 2006-05-14

Usage: 7z [...] [...]
[<@listfiles...>]


a: Add files to archive
d: Delete files from archive
e: Extract files from archive (without using directory names)
l: List contents of archive
t: Test integrity of archive
u: Update files to archive
x: eXtract files with full paths

-ai[r[-|0]]{@listfile|!wildcard}: Include archives
-ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
-bd: Disable percentage indicator
-i[r[-|0]]{@listfile|!wildcard}: Include filenames
-m{Parameters}: set compression Method
-o{Directory}: set Output directory
-p{Password}: set Password
-r[-|0]: Recurse subdirectories
-scs{UTF-8 | WIN | DOS}: set charset for list files
-sfx[{name}]: Create SFX archive
-si[{name}]: read data from stdin
-slt: show technical information for l (List) command
-so: write data to stdout
-t{Type}: Set type of archive
-v{Size}[b|k|m|g]: Create volumes
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
-w[{path}]: assign Work directory. Empty path means a temporary directory
-x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
-y: assume Yes on all queries