2010-05-04 63 views
0

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

回答

4

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

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

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

现在,如果您想获取该日期值并将其用于数据流,则可以直接在Derived Column转换中或在Lookup SQL语句的表达式中使用它,或者哪里。

+0

问题是我没有看到与Foreach循环相关的@FileName变量。我可以创建一个名为fileName的变量,但它不会与实际的文件名相关联。我确实看到系统变量像机器名和创建时间,但没有文件名。也许我只是错过了一些明显的东西;我完全不熟悉SSIS。这是我第一次尝试使用它。 – user327045 2010-05-05 13:37:39

+0

正如Todd解释的那样创建一个包级变量@FileName。在ForEach迭代器的属性选项卡上,选择“变量映射”选项卡。从列表中选择您的@FileName变量并将其映射到索引0.在文件ForEach迭代器中,它将包含当前文件的路径和文件名。 – 2010-05-05 18:34:45

+0

好吧,我不知道索引0映射到路径和文件名。我也刚刚意识到,我的派生列默认长度为0,这就是为什么我的变量不能正常工作。现在正确地拉取这些数据。谢谢! – user327045 2010-05-05 20:05:36