如何有选择地加载Excel文件?

时间:2008-11-13 12:57:42

标签: ssis

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

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

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

我需要建议:

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

SQL File Watcher