Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于筛选和合并重复项的自定义脚本组件SSI_C#_Sql Server_Ssis - Fatal编程技术网

C# 用于筛选和合并重复项的自定义脚本组件SSI

C# 用于筛选和合并重复项的自定义脚本组件SSI,c#,sql-server,ssis,C#,Sql Server,Ssis,我有一个联系人列表,他们的信息来自两个不同的数据库,我已经对这两个数据库进行了合并并进行了排序。现在我有一个聚合列表,如下所示: contactid add1 add2 city phone fullname source ----- ----- ----- ----- ----- ----- ----- BOOG1 1598 Tree Drive

我有一个联系人列表,他们的信息来自两个不同的数据库,我已经对这两个数据库进行了合并并进行了排序。现在我有一个聚合列表,如下所示:

contactid   add1            add2     city     phone        fullname     source
-----      -----            -----    -----    -----         -----        ----- 
BOOG1     1598 Tree Drive  Apt:215    NYC  718-888-9989   Andrew Sample    DB1
NULL      NULL             Apt:215         718-888-9989   Andrew Sample    DB2

BOOG6     1598 Tree Drive  Apt:215    NYC  718-888-8888   Andria Toefield  DB1
NULL      NULL  Apt:215                     718-888-9888   Andria Toefield  DB2
....
....
....
contactid   add1            add2     city     phone        fullname  
-----      -----            -----    -----    -----         -----          
BOOG1   1598 Tree Drive   Apt:215    NYC  718-888-9989   Andrew Sample    

BOOG6   1598 Tree Drive   Apt:215    NYC  718-888-9888    Andria Toefield  
....
....
....
基本上,我希望使用一个脚本组件来比较样本中的行,如果列为空,则选择不为空的,如果存在冲突数据,则选择db2中的数据作为替换。因此,最终结果应如下所示:

contactid   add1            add2     city     phone        fullname     source
-----      -----            -----    -----    -----         -----        ----- 
BOOG1     1598 Tree Drive  Apt:215    NYC  718-888-9989   Andrew Sample    DB1
NULL      NULL             Apt:215         718-888-9989   Andrew Sample    DB2

BOOG6     1598 Tree Drive  Apt:215    NYC  718-888-8888   Andria Toefield  DB1
NULL      NULL  Apt:215                     718-888-9888   Andria Toefield  DB2
....
....
....
contactid   add1            add2     city     phone        fullname  
-----      -----            -----    -----    -----         -----          
BOOG1   1598 Tree Drive   Apt:215    NYC  718-888-9989   Andrew Sample    

BOOG6   1598 Tree Drive   Apt:215    NYC  718-888-9888    Andria Toefield  
....
....
....

我不知道如何开始用C编写脚本。我不知道如何选择行,然后比较行中的某些列。

我不会在脚本任务中尝试此操作-跨行比较太困难

我将添加一个模糊分组转换,以对名称列进行分组。这将添加一个_key_out列。我会将结果放入SQL表中

然后,我将编写一个复杂的SQL查询,在_key_out列上显示一个GROUP BY,并为其他每一列编写CASE语句,以解决您的is缺失和冲突需求

一旦您将其指向任何规模的真实数据集,这种设计的好处将真正得到回报。毫无疑问,您将遇到比上面的示例更复杂的场景,例如DB1有2行John Smith,DB2有3行John Smith。您将能够调整模糊分组参数和/或添加辅助模糊分组以打破联系


在此过程中,您可以查询中间SQL表中的结果,以优化对这些问题的处理。

您是在查询中还是在SSIS中执行Union all?我将Union all作为SSIS数据流中的转换来执行匹配条件、电话和姓名是什么?这可能会变得很难看。匹配是名称,然后它必须查看详细信息,如果为空,则很简单,即选择与该rwo相关的所有其他列,这些列都有详细信息…但如果存在冲突的详细信息,则行的两列都有有效数据,它应该用一个有db2的来替换它。如上面的例子所示。谢谢:我一定会尝试一下。另一方面,我该如何对派生列操作执行模糊分组,或者将其导入平面文件,然后使用该文件读取该文件?这是数据流的转换,因此,您可以将其添加到派生列转换的下游。不幸的是,我无法执行要求数据库的操作请阅读文档: