SSIS 重定向错误 - 行太多

SSIS Redirect on Error - Too many rows

我有一个导入平面 CSV 文件的 SSIS 包,文件中大约有 200,000 条记录。我已经设置了 table 数据导入到一个帐号的主唯一键。源数据中不应有任何重复项(应用程序控制 - 在我的影响之外)

但是 CSV 中有 1 个重复行,但是当我添加主键时它重定向了 7k 行...这些不是重复行它似乎无缘无故地重定向了负载?

如果我手动删除单个重复行,它会完美运行。数据或文件没有什么特别的,它应该只是导入数据并重定向错误行。

此行为是由于使用了 OLE DB 目标和快速插入模式。

使用快速插入模式,OLE DB 目标发出 INSERT BULK 命令并批量插入。如果批次中的一行违反 table 约束,则整个批次将失败并重定向到错误输出。这解释了乍一看很奇怪的行为——拒绝超过 1 行。

您可以用它做什么 - 取决于您的目标和限制

  • 如果只是过滤掉连续的重复项 - 将 OLE DB Dest 切换到常规插入模式,代价是性能显着下降。最简单的方法。
  • 如果性能下降不是一个选项,并且您需要保持简单 - 在 Dataflow 中使用 Sort Component 并勾选 discard duplicate rows 旗帜。警告 - 您无法控制将丢弃哪一行。
  • 如果您需要实施一些关于哪些数据应该通过的业务规则 - 那么您必须实施一些评分列并使用它来过滤行。请参阅 Todd McDermid 的 article on this