Scenario:
We get multiple files during a day and night. we have scheduled to run our SSIS Package every hour. We want to create a Zip file per day and then keep adding the files to it after loading in the same day. Next day a new Zip file should be automatically created and files should be copied to that after loading.
Solution:
In this video we will learn the solution for our scenario " How to Create A Zip File with Date Per day and add files to it after loading in SSIS Package". Below are the list of items we will learn in this video
- How to Create Package Parameters for InputFolder and ArchFolder so we can change the values of them according to the environment ( QA, UAT, Prod) and we don't have to make any changes in the SSIS Package.
- How to use Foreach Loop Container to look through files in SSIS Package
- Save File name in FileName Variable From Foreacah Loop Container
- How to Change .NET Framework 4 to 4.5
- How to add reference to Assemblies such as System.IO.Compression and System.IO.Compression.FileSystem
- Create empty Zip File by using Script Task
- Add file to Zip file by using Script task in SSIS Package
Script used in Script Task to Create Zip file with Date and Add Files to Zip File in SSIS Package
public void Main() { //Assign values to local variable from SSIS Package Parameters and Variables string zipfile = Dts.Variables["User::ArchFullPath"].Value.ToString(); string ArchFolder = Dts.Variables["$Package::ArchFolder"].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); 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); File.Delete(inputfilepath); } } Dts.TaskResult = (int)ScriptResults.Success; }
Expressions for ArchFullPath Variable:
@[$Package::ArchFolder]+Replace(Substring((DT_WSTR,30)GEtdate(),1,10),"-","_")+".zip"
How to Create Zip File and Add Files to It in SSIS Package by using Script Task- SSIS Tutorial
Related Posts/Videos on Zip / UnZip by Script Task
- How to change .NET Framework version in Script Task and Add Reference to Assembly(ZipFile Demo)
- Load Text Files,Zip them to Folder with Datetime and Delete From Input Directory in SSIS Package
- Extract Files From Zip Files and Delete the Zip Files once Unzipped in SSIS Package
- Load File/s, Zip and Delete from Source Folder in SSIS Package
- Zip ( Compress) Files and Add them to Folder According to Extension in SSIS Package
- Zip or Compress Files according to the Name of Files in SSIS Package
- Get File names from Zip Files and Insert into SQL Server Table in SSIS Package
- How to Zip ( Compress) Multiple Folders and Delete in SSIS Package
Hi Sir,
ReplyDeleteCould you please create a post which will convert csv file to password protected using ssis
Regards,
Anmol