用于平面文件源的 sql server 数据工具动态文件名

Rog*_*ger 4 ssis

我有一个 ssis 包,它可以将足够简单的数据从文本文件导入到数据库表中。导入文件名需要配置为动态源,因为文件名会发生变化。所以我的文件名将具有以下模式: bookNames_Shopping_05_02_2016.txt --> bookNames_Shopping_ 将保持不变,但日期戳会改变

我设置了一个名为filename的变量,并在连接管理器的属性窗口中,将 ConnectionString 属性设置为 @[User::filename]。如何设置文件名变量以读取连接管理器指向的文件夹中的文件名?PS 我知道它可以在 For Each 循环中完成,但由于我没有多个文件,而是一个需要处理的文件,我 ** 不想使用 for each 循环。

文件的完整路径:\XYZYUC3312B6\SHARE\Bound\bookNames_Shopping_05_02_2016.txt

use*_*215 6

应用循环的另一种方法是使用表达式。假设正在读取的单个文本文件的名称中包含 SSIS 包将处理它的同一日期,您可以执行以下操作:

  1. 创建一个名为“FileName”的字符串类型的用户变量。
  2. 创建一个名为“bookNames_Shopping”的新连接管理器,指向当前的完整路径“\XYZYUC3312B6\SHARE\Bound\bookNames_Shopping_05_02_2016.txt”。
  3. 选择刚刚创建的新连接管理器并为其打开解决方案资源管理器。
  4. 选择表达式。当属性表达式编辑器打开时,转到属性列并从下拉列表中选择连接字符串。在同一行的“表达式”下的下一列中,选择“浏览”按钮。这将打开表达式生成器窗口。
  5. 在“表达式:”下方的文本框中,输入以下内容:

`"\XYZYUC3312B6\SHARE\Bound\" + @[User::FileName] + "_" +
RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2) + "_" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2) + "_" + (DT_STR, 4, 1252) DATEPART("yy" , GETDATE( )) + ".txt"

选择左下角的“评估表达式”按钮。如果这有效,它应该显示您的完整文件路径,包括当前日期的串联。

\XYZYUC3312B6\SHARE\Bound\bookNames_Shopping_05_04_2016.txt

选择 OK 按钮,一切就绪。我在 SQL Server 2008R2 下的 BIDS 中运行了它。如果您使用的是 SQL Server 2012,那么在 Visual Studio 2010 中,您可以直接为 FileName 变量设置相同的表达式。

从这一点开始,只需在我们的数据流中应用 bookNames_Shopping 连接字符串。