0

我有一个 SSIS 包,它需要查找两种不同类型的 Excel 文件,类型 A 和类型 B,并将其中的数据加载到两个不同的暂存表 tableA 和 tableB。这些excel表格的格式不同,它们与各自的表格相匹配。

为了简单起见,我曾考虑将 typeA.xls 和 typeB.xls 放在两个不同的文件夹中(文件夹路径可配置)。然后将通过其他应用程序或手动将所需的 excel 文件放在这里。

我想要的是能够让我的 dtsx 包扫描文件夹并选择最新的未处理文件并加载它而忽略其他文件,然后用'-loaded'(typeAxxxxxx-loaded.xls)对文件名进行后缀。文件名中的“-loaded”是我计划如何区分已经加载的文件和尚未加载的文件。

我需要以下方面的建议:

a)如何检查最新文件的配置文件夹,即。文件名中没有“-loaded”并加载它?..然后在加载它之后,在配置的文件夹中重命名相同的文件,并带有'-loaded'后缀。

b)这是最好的方法还是有更好的方法?

谢谢。

4

2 回答 2

1

您可以这样做,但它可能需要几个复杂的字符串表达式。

例如,在 .xls 文件上创建一个 ForEach 循环,在循环内添加一个空脚本任务,然后是一个数据流来加载这个文件。将它们与优先约束连接并使其成为条件:优先约束表达式将检查文件名是否不以 -loaded.xls 结尾。您可以在脚本任务中执行此操作,也可以在优先约束上纯粹使用 SSIS 表达式。最后,添加文件系统任务以重命名文件。您可能需要使用另一个表达式构建新文件名。

创建两个文件夹可能更容易:新的未处理文件的传入和已处理的文件的加载,处理后只需将 .xls 移动到此文件夹而不重命名。这将避免第一个条件表达式(和虚拟脚本任务),并简化文件系统任务的配置。

于 2008-11-14T08:15:06.813 回答
0

您可以获取 SQL 文件观察任务并将其添加到您的 SSIS。我认为这是一种更清洁的方式来做你想做的事。

SQL 文件观察器

于 2009-06-30T20:55:33.417 回答