SSIS查找相关数据并添加(如果缺少)

时间:2012-02-01 11:45:07

标签: ssis

说我有这样的输入数据:

firstName | lastName |国家
鲍勃|史密斯|英国
简| Doe |法国
汉克|天蝎座|英国

目标表是:

人们
ID | firstName | lastName | CountryId

国家
ID |国家或地区名称
0 |法国

现在在SSIS数据流任务中我读取输入,使用查找在Country表中搜索匹配的CountryName,如果它存在没问题,返回ID并继续,但如果它不存在我想使用一个OLEDBCommand在Country表中创建记录,获取ID并继续。

然而,正在发生的事情是英国两次被传递到OLEDBCommand。

我该如何处理这种情况?是否有一些方法可以强制查找一次检查一条记录,因为它似乎在添加缺失记录之前检查批处理。我已经尝试在full和none之间更改缓存选项而不会产生任何影响。

1 个答案:

答案 0 :(得分:1)

您可以将缓冲区大小设置为1(每个缓冲区一行),并且查找中没有缓存,但即使如此,您也有风险(因为ssis的并行化)在“同时“。

然而,你可以做的是以不同的方式思考它。也许你不需要一步到位。

首先,加载所有用户并检查国家/地区。对于那些没有的,收集聚合(基于国家),并将其插入您的国家/地区表。

然后,您可以使用正常查找加载所有用户 - 因为Country表已预先填充。