SSIS查找,为不匹配的输出创建新记录并获取新生成的密钥

Posted

技术标签:

【中文标题】SSIS查找,为不匹配的输出创建新记录并获取新生成的密钥【英文标题】:SSIS Lookup, create new records for no-match output and get newly generated keys 【发布时间】:2012-07-07 17:21:11 【问题描述】:

我有一张酒店桌子。

 create table DimHotel
 (
  Hotel_ID int Identity(1, 1),
  HotelName nvarchar(max)
 ) 

现在我得到一些作为HotelNames 的提要,现在我们的业务逻辑是使用Hotel_ID 作为现有的HotelName,并为新的HotelName 创建新记录并使用新生成的Hotel_ID。现在我明白我可以将“查找不匹配输出”定向到 OLE DB 命令转换,然后我如何获得新生成的密钥。 一种选择是在 DimHotel 表上再查找一次(我想这很愚蠢,扫描一张表两次)。我们还有什么其他选择。

我可以使用 but Merge 语句,但我们的 ETL 团队希望避免手动编码。

【问题讨论】:

【参考方案1】:

我认为最好使用检索 SCOPE_IDENTITY 作为输出参数的存储过程。

示例:-

     Create Procedure 
     (
      column names ,
      @id int 
     ) 
     AS
     BEGIN
     INSERT INTO TableName  VALUES (@col1)
     SELECT @id = SCOPE_IDENTITY()
    END

【讨论】:

以上是关于SSIS查找,为不匹配的输出创建新记录并获取新生成的密钥的主要内容,如果未能解决你的问题,请参考以下文章

SSIS Union All 不返回所有记录

在 SSIS 2019 中面临查找转换的问题

SSIS 查找在 varchar 字段上找不到匹配项

SSIS 查找行为很奇怪

SSIS - 比较文本文件和非oledb连接以提供匹配和不匹配的输出

带有数值的 SSIS 查找不起作用