SSIS平面文件源上两个输出的公共行号

时间:2010-10-05 14:08:42

标签: ssis

我有一个小问题(我假设......) 我正在加载一个flatfile(csv),我想在数据流中添加一个rownumber。使用RowNumber变换分别适用于两个输出路径(源和错误)。但是,如果您想在两个路径中使用相同的rownumber,以便能够跟踪发生错误的位置(在文件中),该怎么办?我现在已经把头伸得太长了,我只是把它扔到这里,因为我很确定其他人已经翻过这个......

我已经尝试过一段时间似乎有效的脚本转换,但它会挂起负载。

非常感谢任何有关如何解决此问题的建议。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,使用数据流的脚本组件动态生成数字对您来说不是问题。

我建议您采用以下来自文件的稳定etl过程的原则:

  1. 永远不要在连接器中投射任何东西,只需将字段导入为它们将达到的最大长度的nvarchars。
  2. 根据您的规范投射和控制每一列。
  3. 如果无法读取某行,您将无法知道该索引,但您会知道该文件格式错误(根据我的经验,对于一半传输的文件而言极为罕见),无论如何都应该拒绝该文件。
  4. 文件加载过程的一部分的快速屏幕截图显示拒绝(在分配row_id之后)如何工作(link to dataflow image)。为此,您可以添加更多无数的检查(重复...),甚至还有一个加载文件的存储库,以检查拒绝以及您可能想要控制的任何其他内容(Link to control flow image)。

    在我的一些进程中,我甚至使用平面文件连接器,只是将每一行作为批量文本导入,然后将其拆分为具有中间脚本组件的列,从而允许文件中不同版本的列。

    无论如何,抱歉不要更详细(由于我的状态,我无法添加更多链接或任何图像),但我希望您理解这个概念。

    此致

    旧金山。