如何根据参数使SSIS选择数据源?

时间:2013-04-10 20:13:21

标签: ssis

我有一个SSIS数据流任务,它读取包含某些字段的CSV文件,稍微调整一下并将结果插入表中。源文件名是包参数。那里一切都很好。

现在,我需要使用额外的字段处理稍微不同类型的CSV文件。可以安全地忽略此额外字段,因此处理基本相同。唯一的区别在于数据源的列映射。

当然,我可以创建整个包的副本并调整数据源以匹配第二种文件格式。然而,这个“解决方案”似乎是一个可怕的重复:如果处理过程中有任何变化,我将不得不做两次。我宁愿将另一个参数传递给包,告诉它要处理哪种文件。

麻烦的是,我不知道如何根据参数从一个数据源或另一个数据源读取SSIS,因此问题。

2 个答案:

答案 0 :(得分:1)

我会在SSIS包中复制Connection Manager(CSV定义)和数据流,并调整它们以获得新的文件格式。然后我将使用您描述的参数启用/禁用数据流。

实质上,SSIS不适用于可变元数据。如果这将是一个反复出现的模式,我会在SSIS上游处理它,构建一个VB / C#命令行应用程序将文件分解为SQL表。

答案 1 :(得分:0)

您可以让连接管理器将所有数据推送到1列。然后使用脚本转换组件将数据解析为输出,具体取决于行中的字段数。

你可以根据分隔符将数据拆分成一个字符串数组(当我需要这个时,我用googled寻求帮助)。使用数组,您可以告诉它的大小,以及它所连接的文件类型。

然后,您到目的地的映射可以保持不变。无需复制任何组件。

我必须自己做一次类似的事情,因为虽然我使用的文件总是相同的格式 - 取决于发送文件的系统的版本,它可能会改变 - 因此通过在脚本中处理它通过这种方式转换,我能够处理文件格式的微小变化。如果文件是99%总是相同的那么好..如果它们完全不同,你最好使用一个单独的文件连接管理器。