SSIS-用空字符串替换重复列,保留原始列

时间:2017-02-07 04:24:39

标签: ssis

任何人都可以通过以下要求帮助我。

我需要检查记录中的列是否与我想用空字符串替换重复列的任何其他列匹配。

说我有x1,x2,x3列。如何检查x1是否与任何x1,x2,x3列匹配,如果匹配,我想用空字符串替换重复列。

3 个答案:

答案 0 :(得分:0)

这样做比预期的要复杂得多。以下是两个选项:

  1. 通过复制文件并将其与高阈值进行比较来尝试模糊查找。我怀疑你想检查相同的记录,如果其他列匹配,所以你需要在键上创建一个完全匹配(进入列选项卡,右键单击链接,编辑映射)并做模糊在其他人。您只能链接一次字段,以便根据需要复制列。
  2. 使用所有组合执行存储过程并让它生成带有结果的out表(您可以使用OLE DB命令运行存储过程)。如果我确定数据的“准确性”,我可能会选择那个。否则,请使用模糊。

答案 1 :(得分:0)

由于您只有几列,您可以运行一组更新语句,如下所示:

update Contacts
set Phone2 = null
where Phone2 = Phone1

update Contacts
set Phone3 = null
where Phone3 = Phone1

update Contacts
set Phone3 = null
where Phone3 = Phone2

答案 2 :(得分:0)

在SSIS数据流中完成此任务会有点棘手,因为您将尝试比较所有缓冲区中与当前行相比的所有其他行。

相反,我建议像Gordon Bell建议的那样在数据库中暂存数据。然后,您需要确定找到重复项时哪一行获胜。您可能有一个日期列来对其进行排序,或者您可以在ssis中的数据流中添加行号列,并按您收到数据的方式进行排序。

以下是您如何找到获胜行并通过自我加入更新其他人的示例:Deleting duplicate record in SQL Server