3
votes

I am very new to SSIS and I am building a package which will import files. I have a Execute SQL Task which will execute a SQL statement which will return files that needs to be imported, but the files will need to go into different tables depending on which file is being imported.

I have 2 Data Flow Tasks in my foreach container but now based on the file type it needs to execute 1 of them

How can I achieve this?

enter image description here

EDIT

This is the query that will be executed:

SELECT ReconMedicalAidFile.fReconMedicalAidFileID,   ReconMedicalAidFile.fReconMedicalAidID, 
ReconMedicalAids.fMedicalAidID, ReconMedicalAidFile.fFileName, 
ReconMedicalAidFile.fFileLocation, ReconMedicalAidFile.fFileImportedDate, ReconMedicalAidFile.fNumberRecords, ReconMedicalAidFile.fUser, 
ReconMedicalAidFile.fIsImported
FROM ReconMedicalAidFile INNER JOIN
ReconMedicalAids ON ReconMedicalAidFile.fReconMedicalAidID = ReconMedicalAids.fReconMedicalAidID
WHERE (fIsImported = 0) AND (fNumberRecords = 0)

So the condition is based on fMedicalAidID

2
I assume you have multiple files, hence the ForEach loop. How are the file types recognized? By the extension? - Raj
I have a flag column in my table which will indicate which file is which - Gericke
Please post sample data from your table - Raj

2 Answers

3
votes

The dummy script approach: DummyScript

In the expressions for the two precedence constraints you evaluate a variable that is set either by the first SQL task or the script task. enter image description here

Now, the data will flow down one of the two data flow paths based on the value of the variable. The script task can be empty, or it can perform the logic needed to set the variable.

1
votes

I don't believe you will be able to do what you want in SSIS with the way your current package is designed.

An alternate approach:

  1. Add a Conditional Split task after the first Execute SQL task
  2. Split based on file type
  3. Create a separate ForEach Loop and Execute SQL task for each file type