创建SSIS包以从许多数据源之一导入

时间:2012-01-31 15:49:50

标签: sql-server-2008 ssis

是否可以创建一个可以传递文件(通过变量)的SSIS包,并从变量中确定要使用哪个数据流任务?

我希望能够创建一个单独的DTSX软件包,它可以将文件名作为变量并检测(仅根据文件名),如果它是Excel 2003,Excel 2007或CSV文件,并且来自,执行正确的数据流任务。然后,我将在导入数据后在另一个数据流任务中处理结果。

我很久以前就使用过SSIS,而我只是回来使用它,所以我的知识被锁定并且会慢慢回来。我似乎无法记住(或在Google上找到)在控制流中创建条件分割的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我在控制流程中为每个循环执行了类似的操作。它遍历处理目录中的所有文件,并根据文件名将它们定向到正确的数据流(因为它们都是相同的文件类型,但具有不同的内部结构)。

答案 1 :(得分:1)

正如HLGEM指出的那样,只要内部结构一致,这样的事情就足够了。

我已经声明了一个包级变量DatFlowSelector,并且在我的初始脚本任务中,我会使用逻辑来确定流应根据您要访问的FileName变量采取的路径使用

control flow

在连接预期输出后,使用Precedence Constraint编辑器确定哪条路径的计算结果为true。我的逻辑只是@[User::DataFlowSelector] == N,其中N映射到我的脚本分配的值。

当我修改约束时,我通常会将ShowAnnotation属性切换为“ConstraintOptions”,因为它会让未来的维护者立即明白有什么事情发生。在这种情况下,SQL 2012将帮助将fx字形分配给连接器,但显示逻辑可以提供声音逻辑的一目了然。

precedent constraint editor