April 18, 2013 at 5:31 am
hi guys
i need help, i've created a ForeachLoop Container which loop through all the files .xml in my source directory then created XML Source and flat file Destination, my package execute successfully but create multiple output .txt file instead i one to output in one single .txt file
thanks
April 19, 2013 at 4:57 am
What is the connectionstring set to in the connection manager for the output file? I can't see how you can get multiple files unless you're renaming dynamically during the loop.
April 19, 2013 at 5:04 am
thank you for the response
here's my output path C:\OnKeyImports\WorkOrderCosting\Source\WorkOrderCosting_20130419_100035.txt
the expression on the connection string is @[User::ImportSourcePath] + @[User::FilePrefix] + "_" + (DT_WSTR,4)DatePart("yyyy", GetDate()) + RIGHT("0" + (DT_WSTR,2)DatePart("mm", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("dd", GetDate()), 2) + "_" + RIGHT("0" + (DT_WSTR,2)DatePart("hh", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("mi", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("ss", GetDate()), 2) + @[User::FileExtension]
April 19, 2013 at 5:08 am
Are you getting multiple files with different times in the name, or are you getting a single file which is being overwritten each time round the loop?
April 19, 2013 at 5:23 am
i'm getting multiple files outputs whereas i want to combine all my input to a single file.
here's what i'm doing. i have multiple files e.g Item1.xml, Item2.xml, Item3.xml, etc. these files have same format field , i created Foreach Loop container inside the container i have a dataflow which has xml source and Flat File Destination.
the destination should be a single file which combines data coming from the xml source instead i'm getting multiple outputs.
thanks
April 19, 2013 at 5:33 am
The only way I can see you getting multiple files from that connectionstring is if it was taking more than a second to process each file. Each time you go round the loop, it will rebuild the connection string, and will give it a different name because the seconds part will differ.
I would try building the filename into a new variable before entering the loop and then using that variable in the connectionstring.
April 19, 2013 at 5:39 am
(and obviously make sure you've got Overwrite=False in the Flat File Destination properties - I think that the default is True).
April 19, 2013 at 5:45 am
i've build connection path variables -
ImportSourcePath = C:\OnKeyImports\WorkOrderCosting\Source\
FilePrefix = WorkOrderCosting
FileExtension = .txt
and build it in the connection string like this to add date in the file name:
RIGHT("0" + (DT_WSTR,2)DatePart("mm", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("dd", GetDate()), 2) +
"_" + RIGHT("0" + (DT_WSTR,2)DatePart("hh", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("mi", GetDate()), 2) +
RIGHT("0" + (DT_WSTR,2)DatePart("ss", GetDate()), 2) + @[User::FileExtension]
April 19, 2013 at 5:56 am
Yes, but it will recalculate that connectionstring every time it uses it (i.e. every time round the loop).
Create a new variable User::FullOutputFileName (or whatever), and assign its value as:
RIGHT("0" + (DT_WSTR,2)DatePart("mm", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("dd", GetDate()), 2) +
"_" + RIGHT("0" + (DT_WSTR,2)DatePart("hh", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("mi", GetDate()), 2) +
RIGHT("0" + (DT_WSTR,2)DatePart("ss", GetDate()), 2) + @[User::FileExtension]
before entering the loop. (You'll probably need to do this in a script to ensure it gets the actual value rather than just the formula).
April 19, 2013 at 6:03 am
Andrew Watson-478275 (4/19/2013)
Yes, but it will recalculate that connectionstring every time it uses it (i.e. every time round the loop).Create a new variable User::FullOutputFileName (or whatever), and assign its value as:
RIGHT("0" + (DT_WSTR,2)DatePart("mm", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("dd", GetDate()), 2) +
"_" + RIGHT("0" + (DT_WSTR,2)DatePart("hh", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("mi", GetDate()), 2) +
RIGHT("0" + (DT_WSTR,2)DatePart("ss", GetDate()), 2) + @[User::FileExtension]
before entering the loop. (You'll probably need to do this in a script to ensure it gets the actual value rather than just the formula).
Another way of doing this is to have a static name for the output file and then to rename it after the data flows have all completed.
The absence of evidence is not evidence of absence
- Martin Rees
The absence of consumable DDL, sample data and desired results is, however, evidence of the absence of my response
- Phil Parkin
April 19, 2013 at 6:18 am
Good point Phil. Probably neater to do it that way (and no need for any scripts).
April 22, 2013 at 1:04 am
i've tried creating a static output file but now only one file is loaded in the the destination
April 22, 2013 at 1:10 am
Have you configured the output as 'Append' or 'Overwrite'?
If only the final file is appearing in there, I would suspect 'Overwrite'.
The absence of evidence is not evidence of absence
- Martin Rees
The absence of consumable DDL, sample data and desired results is, however, evidence of the absence of my response
- Phil Parkin
April 22, 2013 at 1:15 am
YOU ARE SUCH A STAR
thank you so much i didn't realize i was overwitting the ouput, it works perfectly now!!!!!
April 22, 2013 at 1:17 am
Great - thanks for that!
The absence of evidence is not evidence of absence
- Martin Rees
The absence of consumable DDL, sample data and desired results is, however, evidence of the absence of my response
- Phil Parkin
Viewing 15 posts - 1 through 14 (of 14 total)
You must be logged in to reply to this topic. Login to reply