【问题标题】:How to parse a date from an SSIS Excel filename如何从 SSIS Excel 文件名中解析日期
【发布时间】:2010-05-04 17:43:12
【问题描述】:

我想使用 foreach 容器遍历与以下内容匹配的文件夹:“Filename_MMYYYY.xls”。这很容易做到;但我似乎找不到从文件名中解析 MMYYYY 并将其添加到我可以用作我的 DimDate 表的查找字段的变量(或其他东西)的方法。似乎可以使用平面文件数据源,但不能使用 excel 连接。我正在使用 Visual Studio 2005。请帮忙!

【问题讨论】:

    标签: sql sql-server-2005 ssis


    【解决方案1】:

    我是否正确理解您想要获取文件名、解构它并从中获取日期类型的变量?如果是这样,那么您需要从从 Foreach 循环中获得的文件名变量开始 - 我将调用该变量 @FileName。

    首先,创建一个新变量 - @FileDate - 作为 DateTime 类型。转到其属性窗口 (F4),并将 EvaluateAsExpression 属性设置为 True。编辑表达式,然后输入类似这样的内容(您可能需要调整):

    (DT_DBTIMESTAMP)(SUBSTRING(@FileName, 12, 4) + "-" + SUBSTRING(@FileName, 10, 2) + "-01")

    现在,如果您想要获取该日期值并在数据流中使用它,您可以直接在派生列转换中或在查找 SQL 语句的表达式中或任何地方使用它。

    【讨论】:

    • 问题是我没有看到与 Foreach 循环关联的 @FileName 变量。我可以创建一个名为 fileName 的变量,但它不会与实际的文件名相关联。我确实看到了系统变量,例如机器名称和创建时间,但没有文件名。也许我只是错过了一些明显的东西;我对SSIS一点也不熟悉。这是我第一次尝试使用它。
    • 按照 Todd 的解释创建一个包级变量 @FileName。在 ForEach 迭代器的属性选项卡上,选择“变量映射”选项卡。从列表中选择您的 @FileName 变量并将其映射到索引 0。在文件 ForEach 迭代器上,这将包含当前文件的路径和文件名。
    • 好吧,我不知道索引 0 映射到路径和文件名。我也刚刚意识到我的派生列的长度默认为 0,这就是我的变量无法正常工作的原因。它现在可以正确提取该数据。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多