【问题标题】:SSIS Redirect Duplicate/Error RecordsSSIS 重定向重复/错误记录
【发布时间】:2017-06-06 14:02:13
【问题描述】:

我的 SSIS 包读取一个小的 .txt 文件并加载到一个表中。到目前为止没有问题。

但是,有时这个包会因为 PK 问题而失败,这是可以理解的(重复在源表中)。

我想让好的数据继续流入表格,并将重复的数据重定向到不同的表格以供进一步调查。

我的想法是简单地将红色/平面文件源错误输出路由到新的 OLEDB 目标/表,并将源错误输出更改为 Error = Redirect Row。

但是,我继续收到错误:违反 PRIMARY KEY 约束。

【问题讨论】:

  • 使用目标的错误输出,而不是平面文件源的错误输出。
  • 为什么不在写入表之前添加查找?然后可以将匹配的记录重定向到您的另一个表。不匹配的记录(即错误重定向)转到现有表
  • @JeroenMostert 这似乎将我的所有数据(700 奇行)发送到错误表。似乎没有一个到达有效的表。
  • 是的,因为整个插入(批处理)在违反约束时失败。如果您需要过滤单个行,请将批量大小降低到单个插入(但这将非常低效)或遵循 Miguel 提出的策略进行查找并仅插入已知不存在的行(但请注意,这不是原子的,所以如果其他进程正在插入,这仍然会导致重复),或者将整个文件批量复制到表中并执行 T-SQL INSERT ... WHERE NOT EXISTS/MERGE(SSIS 并不总是最方便的工具)。

标签: sql-server ssis


【解决方案1】:

我会通过将整个文件导入到空白暂存表中来处理此问题,然后调用将新记录导入最终目标表中的存储过程,并将所有重复记录导入到其他表中。

【讨论】:

    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多