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

标签 ssis

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

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

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

最佳答案

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

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

  • `"\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 连接字符串。

    关于ssis - 用于平面文件源的 sql server 数据工具动态文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37009240/

    相关文章:

    xml - 使用 xslt 删除信息路径 XML 中的信息路径声明? <? mso ......>

    excel - SSIS在有数据时将列读取为NULL

    c# - Visual Studio 2015 SSIS - 未在 SSIS 工具箱中选取自定义 SSIS 组件

    performance - Kingswaysoft 处理大量数据的 SSIS 速度缓慢且性能不佳

    sql-server - 什么图像用于通过 bitbucket 云自动将 SSIS 包部署到 SQL Server?

    azure - xp_cmdshell azure 数据工厂

    sql-server - 使用 dtexec 运行 SSIS 包

    ssis - 为什么 Excel 源认为我的查询有参数?

    mysql - 数据类型已从 Text10 -> Code10 更改,mysql 中的等效类型是什么?

    sql-server - 如何在Excel Source的foreach循环容器中动态传递excel连接字符串?