首页 > 解决方案 > 在 SSIS 中,如何查找值的 ID,如果不匹配,则插入值并返回 ID

问题描述

使用 SSIS,我将分阶段提取加载到其主数据库中。该过程的一部分是使用 LOOKUP 来获取字符串值的 ID,如果它不存在,则将其插入引用表(使用 OLE DB COMMAND)并通过后续查找返回该 ID。

*SSIS 截图*

LOOKUP 表示即使插入后前 50 个值也不匹配。有没有办法解决这个问题?或者,我应该尝试另一种方法吗?

一些研究/尝试...

  1. 最初,没有返回任何匹配项。我不得不将所有查找更改为“无缓存”,以便重新加载引用表(它们非常小,所以我怀疑我会有很大的性能问题)。

  2. 我见过的另一种方法是多播到不同的查找中(基于我正在查找的列),并在我成功插入/查找它们后将它们合并在一起。但是从我读到的内容来看,这种方法存在严重的性能问题。

我希望查找匹配或不匹配。如果不匹配,插入新值;然后,再次查找 ID 的值(如果不匹配,则失败)。联合原始匹配和原始不匹配以进行下一次查找。

标签: sql-serverssislookup

解决方案


试试这个模式:

在此处输入图像描述

1.You are multicasting the dataset and grouping by just your lookup column
2.inserting your lookup and adding the scopeidentity(lookupid) to you grouped data
3.joining in the data you inserted to effective add your lookup value to every row
4.unioning your data back in

我不肯定,但您可能需要添加排序才能使用合并连接。


推荐阅读