2017-06-07 1 views
0

J'essaye de compresser un dossier dans SSIS, il y a 12 dossiers dans le dossier de source et j'ai besoin de dossier de zipthat. Je peux obtenir les fichiers zip très bien mon problème est les dossiers.Zip un dossier utilisant SSIS

Je dois utiliser winzip pour créer les paquets compressés.

Quelqu'un peut-il me diriger vers un bon tutoriel. Je n'ai pas réussi à implémenter les échantillons que j'ai trouvés.

Merci

+0

S'il vous plaît montrer ce que vous avez essayé et se référer aux exemples que vous avez utilisés pour éviter inutiles * "essayez ceci .. oh j'ai essayé ça, ça n'a pas fonctionné" * avant et en arrière – Filburt

+0

Il peut vous aider à démarrer [link] (https://stackoverflow.com/questions/38378321/how-to-zip-a-folder-using-ssis-2008-without-using-any-third-party-sw/38481869#38481869) –

+0

Bonjour @alex A appréciez votre aide! J'ai essayé de faire à votre façon. J'ai fait exactement ce que vous avez suggéré mais mon paquet est simplement exécuté avec succès et ne compresse pas le dossier. Considérez la situation comme j'ai essayé..sFolderCompressed -> F: \ Archieve \ test.zip, sFolderSource -> F: \ Source \ test..ces sont la valeur que j'ai passé et les a appelés dans la variable Lecture seule dans la tâche de script comme vous l'avez suggéré. Mais rien n'a changé. S'il vous plaît corrigez-moi où j'ai fait une erreur. – Gnanaskandhan

Répondre

1

Essayez avec 7zip c'est gratuit. Jetez un oeil à 7zip command line user guide il contient toutes les commandes dont vous avez besoin

Et utilisez une tâche de script ou une tâche d'exécution pour y parvenir. Il y a aussi d'autres liens utiles:

MISE À JOUR 1

vous pouvez suivre ce lien pour Winzip:

Dans le lien ci-dessus, ils ont suggéré d'utiliser cette commande:

wzzip "c:\Test.zip" "c:\myfolder" -exPR 
+1

Merci. Mais dans mon utilisateur ils utilisent winzip seulement je n'ai pas la permission d'utiliser 7 zip .. s'il vous plaît partager une solution avec winzip – Gnanaskandhan

+0

@Gnanaskandhan j'ai mis à jour ma réponse jeter un oeil – Hadi

+0

Merci, ... mais son ne fonctionne pas @Hadi .. – Gnanaskandhan

1

Ajout d'une tâche de script, yuo peut utiliser la ZipFile (classe) here reference, vous devez vous référer à l'Assemblée System.IO.Compression.FileSystem dans le projet (.NET Framework 4.5).

Vous devez fournir à la tâche de script le dossier à fermeture éclair et le nom du dossier compressé comme ReadOnlyVariables (à ajouter dans l'onglet ReadOnlyVariables)

Ces deux variables doivent être définies dans l'onglet Variables (type String) de l'emballage et peut être modifié de façon dynamique par un cycle (par exemple, pour chaque)

j'utiliser ces deux variables:.

sFolderCompressed - the folder '.zip' that you want to obtain eg. C:\folder1\result.zip 
sFolderSource - the source folder containing the files affected eg. C:\folder1\folder2 

enter image description here

Le script est fait en utilisant C#, choisissez Script Langue: Microsoft Visual C#

enter image description here

Voici le code à ajouter dans la méthode principale:

using System.IO.Compression; 

    public void Main() 
    { 
     try 
     { 
      string zipPath = (string)Dts.Variables["User::sFolderCompressed"].Value; 
      string startPath = (string)Dts.Variables["User::sFolderSource"].Value; 


      ZipFile.CreateFromDirectory(startPath, zipPath); 
     } 
     catch (Exception objException) 
     { 
      Dts.TaskResult = (int)ScriptResults.Failure; 
      // Log the exception 
     } 
     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

, je l'espère aider.

+0

Merci @alex son travail mais j'ai besoin de script pour C# 2008 .. – Gnanaskandhan

0

Ecrivez ces éléments dans le fichier bat ... "C: \ Program Files \ WinZip \ WINZIP64.EXE" -a "C: \ Desktop \ dossier_destination \ Exemple.zip » "C: \ Desktop \ Sample"

En tâche d'exécution de processus:

Mentionner l'emplacement du fichier de chauve-souris dans Execute processus de travail -> Processus -> Executable

Il est beau travail..