Quantcast
Channel: Welcome To TechBrothersIT
Viewing all articles
Browse latest Browse all 2038

Zip or Compress Files according to the Name of Files in SSIS Package - SQL Server Integration Services(SSIS) Tutorial

$
0
0

Scenario:

We have one Source folder in which everybody puts the files to load. There are Customer Files those start with Customer_Date_Time, There are Sales files with Sales_DateTime etc.  We want to create an SSIS Package that can run at the end of the day and zip the files according to the names of the files.

Solution:

  1. Create Package Parameters for SourceFolder and ArchFolder so the path can be changed by using SSIS configuration according to the environment
  2. Create FileName variable so we can save file name with extension when loop through files by using  Foreach Loop Container 
  3. Create ZipFile Variable and write expression to build Full Zip File path, Here is the expression that we used in the video @[$Package::ArchFolder] +Substring( @[User::FileName] ,1,FindString( @[User::FileName],"_",1))+Replace(Substring((DT_WSTR,30)Getdate(),1,10),"-","_")+".zip"
  4. Change .Net Framework to 4.5 version in script task so we can add assemblies such as System.IO.Compression and System.IO.Compression.FileSystem
  5. Write Script to Create new Zip file if not exists according to name part and date. Then add the file to it and delete the file from source folder.
  6. If zip file already exists then add the file to it and delete the source file from Source Folder.

Script used in the Script task to create Zip File according to the name part of files in source folder.

publicvoid Main()
{

//Assign values to local variable from SSIS Package Parameters and Variables
string zipfile = Dts.Variables["User::ZipFile"].Value.ToString();
string filename= Dts.Variables["User::FileName"].Value.ToString();
string inputfilepath = Dts.Variables["$Package::InputFolder"].Value.ToString() + filename;


//If zip File already exist for the same day, just add the files to it
if (
File.Exists(zipfile))
{
//MessageBox.Show(" Zip File does Exists");
using (ZipArchive addfile = ZipFile.Open(zipfile, ZipArchiveMode.Update))
{
addfile.CreateEntryFromFile(inputfilepath, filename);

//Delete the file after zipping it
File.Delete(inputfilepath);
}

//If zip file does not exist for the day, create it and add files to it
}
else
{
// MessageBox.Show("File Does not exists");
var fileStream = new FileStream(zipfile, FileMode.Create);
fileStream.Close();

using (ZipArchive addfile = ZipFile.Open(zipfile, ZipArchiveMode.Update))
{
addfile.CreateEntryFromFile(inputfilepath, filename);
}

//Delete the file after zipping it
File.Delete(inputfilepath);

}

Dts.TaskResult = (int)ScriptResults.Success;
}


How to Zip/Compress the files according to the name part in SSIS Package - SSIS Tutorial

Viewing all articles
Browse latest Browse all 2038

Trending Articles