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

问题描述 投票:0回答:4

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

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

可以吗?

谢谢

sql-server ssis sql-server-2012
4个回答
35
投票

借助表达式,您可以使连接动态化。

从“连接管理器”窗格中选择您的平面文件连接。在“属性”窗格中,单击“表达式(...)”。然后从下拉列表中选择 ConnectionString Property,并在 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 动态命名目的地

SSIS 动态平面文件连接

enter image description here

您需要通过将路径中的每个反斜杠加倍来转义反斜杠:

enter image description here


2
投票

在连接管理器中选择文件连接,转到属性并单击表达式旁边的 (...)。

在编辑器中,从属性列中选择 ConnectionString。 在表达式文本框中,您可以输入类似“rootNameOfFile”+(DT_WSTR, 50)(DT_DBDATE)GETDATE()+“.csv”

评估你的表达,确保你得到了你所期望的结果,瞧!


1
投票

如果您没有 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>

0
投票

您可以轻松地为 SSIS 包中的平面或 csv 文件提供动态文件名,如 DataFeed_{yyyyMMdd} .txt 例如。 DataFeed_20181212.txt。只需转到平面文件连接管理器属性并定义表达式值,以另一种方式,您可以定义包级别变量,并且可以在表达式中使用该变量,并且根据环境,您可以使用配置文件 .dtsconfig 文件定义文件夹位置

更多详细信息@ssis 平面文件的动态文件名

© www.soinside.com 2019 - 2024. All rights reserved.