3

How could I add multiple file extensions to the Files: input field in the Foreach loop container in SSIS 2008.

I have currently entered as *.zip OR .csv see image... but it doesn not work only works if I have one value like *.zip

ForEachLoop in SSIS

Hadi
  • 36,233
  • 13
  • 65
  • 124
milltonion
  • 43
  • 1
  • 9
  • I think you may have to use two loops or use one loop with `*.*` and then use an expression on a constraint inside the loop to filter to just zip and CSV. – GregGalloway Apr 04 '17 at 02:01

2 Answers2

2

I don't think you can specify two file type extensions in a For each Loop container , you should use *.* and you can filter for a specific extensions by using the following steps:

  1. add a Variable of type boolean (ex: User::Flag)
  2. add a script task inside the container and mark Filename variable as Readonly , Flag variable as ReadWrite

enter image description here

  1. Inside the script write the following script

    Public Sub Main()
    
        Dim strFile As String = Dts.Variables.Item("Filename").Value.ToString
    
        Select Case IO.Path.GetExtension(strFile).ToLower
            Case ".csv", ".zip"
                Dts.Variables.Item("Flag").Value = True
    
    
            Case Else
                Dts.Variables.Item("Flag").Value = False
        End Select
    
    
        Dts.TaskResult = ScriptResults.Success
    End Sub
    
  2. Add an expression to the Script task output connector like shown below

enter image description here

Or you can achieve it by using a Third-party components like Foreach File Enumerator with regex

Hadi
  • 36,233
  • 13
  • 65
  • 124
1

Step 1) Create a variable which store the file name with the extension.
Step 2) Under the foreach loop container Map the variable which we created in step 1.
Step 3) create a execute sql task inside the foreach loop container, add connection and under sql statement enter the code insert into tablename(filename) values (?).
Step 4) Under parameter mapping select the variable which we created under variable name, changed the data type to nvarchar and changed parameter to 0.
Step 5) With the help of string function then you can create an expression with the help of string function like right

Red Devil
  • 2,343
  • 2
  • 21
  • 41