Solved

Create dynamic filename in SSIS

Posted on 2010-11-12
9
943 Views
Last Modified: 2012-06-22
Hi,

I'm migrating a DTS package to SSIS. In the DTS, I have an ActiveX Script that set a variable (filename with date and time as the file extension) and a Dynamic Properties Task that set the filename to a Text-File destination feeded by a Transform Data Task that uses a SQL query that extract and format the data to the required field-length. That works fine.

Now, I need to do the same in SSIS. Flat-File Connection Manager ask for an existing file. But this file is created by the DTS, it doesn't exist yet. And anyway, filename should be dynamic.

I tried Raw File, where I can select a variable as filename, but the output is binary.

The result file is imported by a SAP ERP system, so it has to match the required fix field-length.

how can I do this in SSIS?

thanks for your time and help
0
Comment
Question by:Dominic34
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
9 Comments
 
LVL 16

Expert Comment

by:EvilPostIt
ID: 34121085
You will be able to do the same thing with a csv destination. You will need to set the destination filename as either an expression or a variable. If variable you will be able to evaluate the variable as an expression.
0
 

Author Comment

by:Dominic34
ID: 34121438
how can I set the destination as a variable? When setting up a flat-file connection, it ask for a valid file name, I have to input something there. How can I use Expression to dynamically change filename of a flat-file connection ?
0
 
LVL 16

Accepted Solution

by:
EvilPostIt earned 500 total points
ID: 34121496
In the properties of the flat file connection manager you will see a section called expressions. In the expressions section set the Property to be updated to ConnectionString and enter your expression to build your filename.

Yuo will still have to enter a filename so it will validate but upon run-time this will be over-ridden.
0
Free Backup Tool for VMware and Hyper-V

Restore full virtual machine or individual guest files from 19 common file systems directly from the backup file. Schedule VM backups with PowerShell scripts. Set desired time, lean back and let the script to notify you via email upon completion.  

 
LVL 16

Expert Comment

by:EvilPostIt
ID: 34121503
When i say "In the expressions section" you will have to click the ... button.
0
 

Author Comment

by:Dominic34
ID: 34121752
ok good. I've set the property to my variable name. But don't know why, the variable never changes when I execute the ActiveX Script:

Function Main()
dim NomFic
      NomFic = year(now())  & Pad2Left(month(now()))  & Pad2Left(day(now())) & Pad2Left(hour(now())) & Pad2Left(minute(now()))
      DTSGlobalVariables("APicking").value = DTSGlobalVariables("Path").value + DTSGlobalVariables("APickingName").value + NomFic

      Main = DTSTaskExecResult_Success
End Function

Function Pad2Left(ByVal Value)
   Pad2Left = Right("0" & CStr(Value), 2)
End Function

I have set the ConnectionString Expression to the variable "APicking". The ActiveX is executed before the Data Flow Task. Variable is not ReadOnly. But it don't changes and I generate same filename everytime.
0
 
LVL 16

Expert Comment

by:EvilPostIt
ID: 34121776
If you look at the properties of the variable and set EvaluateAsExpression you can actually set the value of the variable there. You shouldnt need to use a script task to do this.
0
 

Author Comment

by:Dominic34
ID: 34121867
ok sorry, I had a bug in my variable. File create with correct name and data is fed into it. Still have a problem with the formatting. All rows are inserted into a single line in the file. There is no CR/LF, although Row Delimiter is CR/LF and preview of data is looking good...
0
 

Author Comment

by:Dominic34
ID: 34122056
This is my extraction query:
SELECT  DISTINCT
RTRIM( dbo.PAD(a.[vpmOrder], 22, ' ', 'L')) AS PO,
      RTRIM(dbo.PAD(a.itmCode, 6, ' ', 'L')) AS ITEM,
      'V' as TYPE,
      RTRIM( dbo.PAD(a.[vpmNoColis], 20, ' ', 'L')) as COLIS,
      dbo.PAD(a.[itmQtyReelle], 6, '0', 'L') AS QTY,
      RTRIM( dbo.PAD(b.[orderDate], 8, ' ', 'L')) as DATE
FROM   TB_vpmPreColisage a
INNER JOIN  [TB_vpmOrder] b ON a.[vpmOrder] = b.[orderNO]
INNER JOIN [TB_vpmColis]  ON TB_vpmColis.[vpmNoColis] = a.[vpmNoColis]
WHERE [orderCompleted] IS NOT NULL AND b.[orderTreated] IS NULL

In Flat-File Connection Manager, I selected an existing valid file and delimited the width of each columns. Row Delimited is CR/LF. Output file gives:
              1007540 04235V         S075400221200003520101115                 1007540 09263V         C075400041200001520101115 ....
all the extracted data into a single row....And the preview looks good.

What I'm doing wrong?
0
 

Author Comment

by:Dominic34
ID: 34122470
ok found it. I had to select "Ragged Right" in the Format properties of the Flat-File Connection Manager to have the CR/LF add at the end of each row.

works like a charm now
0

Featured Post

Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

There have been several questions about Large Transaction Log Files in SQL Server 2008, and how to get rid of them when disk space has become critical. This article will explain how to disable full recovery and implement simple recovery that carries…
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question