Sql Server SSIS包平面文件目标文件名模式(日期,时间或类似)?

时间:2014-06-27 13:07:34

标签: sql-server ssis sql-server-2012

我正在安排一个SSIS包,用于将数据导出到平面文件。

但我想用一些日期信息生成文件名,例如foo_20140606.csv

有可能吗?

由于

4 个答案:

答案 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

enter image description here

enter image description here

答案 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文件来定义文件夹位置

更多详细信息@ ssis dynamic file name for flat file