我正在安排一个SSIS包,用于将数据导出到平面文件。
但我想用一些日期信息生成文件名,例如foo_20140606.csv
有可能吗?
由于
答案 0 :(得分:23)
借助表达式,您可以使连接动态化。
从“连接管理器”窗格中选择平面文件连接。在“属性”窗格中,单击“表达式(...)”。然后从下拉列表中选择ConnectionString属性,并在Expression(...)中放置表达式并对其进行评估。
表达式构建 -
For day : (DT_STR,4,1252)DAY( DATEADD( "dd", -1, getdate() ))
For month: (DT_STR,4,1252)MONTH( DATEADD( "dd", -1, getdate() ))
For Year: (DT_STR,4,1252)YEAR( DATEADD( "dd", -1, getdate() ))
示例表达式(您需要根据您的要求进行调整) -
"E:\\Backup\\EmployeeCount_"+(DT_STR,4,1252)DATEPART( "yyyy" , getdate() ) + RIGHT("0" + (DT_STR,4,1252)DATEPART( "mm" , getdate() ), 2) + RIGHT("0" + (DT_STR,4,1252)DATEPART( "dd" , getdate() ), 2) +".txt"
将E:\Backup\EmployeeCount_20140627.txt
作为值。
请注意 - 您需要一个工作平面文件连接,因此首先创建平面文件连接,其connectionString属性随后将由表达式自动替换。
您也可以按照这些一步一步的文章进行操作。
ssis dynamically naming destination
SSIS Dynamic Flat File Connection
答案 1 :(得分:1)
在Connection Manager中选择文件连接,转到“属性”,然后单击表达式旁边的(...)。
在编辑器中,从Property列中选择ConnectionString。 在“表达式”文本框中,您可以输入类似" rootNameOfFile" +(DT_WSTR,50)(DT_DBDATE)GETDATE()+" .csv"
评估你的表情,以确保你得到你期望的,瞧!
答案 2 :(得分:0)
如果您没有SSDT,因此无法使用GUI进行编辑,请直接编辑SSIS包:
在:
<DTS:ConnectionManager
DTS:refId="Package.ConnectionManagers[DestinationConnectionFlatFile]"
DTS:ObjectName="DestinationConnectionFlatFile"
DTS:DTSID="{C69365C4-EF12-4606-980B-E8862EE997A4}"
DTS:CreationName="FLATFILE">
<DTS:ObjectData>
后:
<DTS:ConnectionManager
DTS:refId="Package.ConnectionManagers[DestinationConnectionFlatFile]"
DTS:CreationName="FLATFILE"
DTS:DTSID="{C69365C4-EF12-4606-980B-E8862EE997A4}"
DTS:ObjectName="DestinationConnectionFlatFile">
<DTS:PropertyExpression
DTS:Name="ConnectionString">"C:\\Exportdir\\Filename_"
+ (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) + ".csv"
</DTS:PropertyExpression>
<DTS:ObjectData>
答案 3 :(得分:0)
您可以轻松地在SSIS包中为Flat或csv文件提供动态文件名,例如DataFeed_ {yyyyMMdd} .txt。 DataFeed_20181212.txt。只需转到平面文件连接管理器属性并定义表达式值,然后以另一种方式定义包级别变量,即可在表达式中使用此变量,并且根据环境,您可以使用配置文件.dtsconfig文件来定义文件夹位置