SQL Server‎ > ‎

SSIS Script to move/rename/archive source files

Use the following vb.net code to add a script task to a SSIS package.  The script task reads the files in a specified folder, then archives those files to a different folder and finally writes the files to a generically named file in the Integration Source folder.  You must add Imports.System.IO to the declaration section of your script.

        ' ***********************************************************************************************
        ' This task iterates through the files in the specified directory (sSourcePath)
        ' It copies each file to an appropriate archive folder and concatenates the creation date
        ' and creation time to the beginning of the file name.
        ' It then writes the contents to a generic named file based on the prefix of the source file.
        ' The new generic file is in the "E:\UploadArchives" target folder. 
        ' Multiple source files with identical prefixes are appended to the same genric target file
        ' ***********************************************************************************************

        Dim sSourcePath As String = "C:\Inetpub\ftproot\Data"
        Dim di As DirectoryInfo = New DirectoryInfo(sSourcePath)
        Dim fi As FileInfo
        Dim sFileName As String = ""
        Dim sFilePathName As String = ""
        Dim sNewFName As String = ""
        Dim sDestinationFile As String = ""
        Dim dtFileDate As Date = CDate("1/1/1900")
        Dim dtFileTime As Date = CDate("12:00:00")
        Dim strFileDate As String = ""
        Dim strText As String = ""

        'If the Generic file exists, delete it
        Dim sDestFile1 As String = "E:\UploadArchives\WPTS.txt"
        If (File.Exists(sDestFile1)) Then
            File.Delete(sDestFile1)
        End If

        ' Create a data writer to the generic file
        Dim objWriter1 As New IO.StreamWriter(sDestFile1, True)
       
        Dim sDestFile2 As String = "E:\UploadArchives\err_WPTS.txt"
        If (File.Exists(sDestFile2)) Then
                File.Delete(sDestFile2)
        End If
        Dim objWriter2 As New IO.StreamWriter(sDestFile2, True)
       
        'Iterate through the files in the source folder getting the creation date/time for each file
        For Each fi In di.GetFiles("*.txt")
            strText = ""
            sFileName = fi.Name
            sFilePathName = sSourcePath & "\" & fi.Name
            dtFileDate = fi.CreationTime.Date
            dtFileTime = fi.CreationTime
            strFileDate = Format(dtFileDate, "MMddyyyy") & "_" & Format(dtFileTime, "HHmmss")

            'Create a new file in the archive folder
            sNewFName = strFileDate & "_" & sFileName
            'Left(sFileName, Len(sFileName) - 4) & "_" & strFileDAte & ".dat"
            sDestinationFile = "E:\UploadArchives\WPTS\" & sNewFName

            'Read the data from the source file and remove the connection
            Dim objreader As New System.IO.StreamReader(sFilePathName)
            strText = objreader.ReadToEnd()
            objreader.Close()
            objreader.Dispose()

            'Write the read data to the appropriate Generic file based on the source file prefix
            Select Case Left(sFileName, 3)
                Case "err"
                     objWriter2.Write(strText)
                     objWriter2.Close()
                     System.IO.File.Move(sFilePathName, sDestinationFile)                  
                Case "not"
                    ' Do Nothing
                Case "SAR"
                    'Do Nothing
                Case "WTS"
                    objWriter1.Write(strText)
                    objWriter1.Close()
                    System.IO.File.Move(sFilePathName, sDestinationFile)
                Case "UPL"
                    'Do Nothing
                Case Else
                    'Do Nothing
            End Select
        Next

        objWriter1.Dispose()
        objWriter2.Dispose()

        Dts.TaskResult = ScriptResults.Success
Comments