Sql 如何将合并合并合并到SSIS数据流任务中?

Sql 如何将合并合并合并到SSIS数据流任务中?,sql,sql-server,ssis,Sql,Sql Server,Ssis,当我将值从暂存表插入主表时,我试图防止重复。我只有两个组件:一个指向OLE DB目标的OLE DB源 在OLE DB源代码中,我最初有以下内容: SELECT [QVW Names] as 'QVW Name', '1' as 'QVW Type' FROM dbo.STG_QVD_Generator WHERE [QVW Names] <> '' UNION SELECT [QVW Names] as 'QVW Name', '2' as 'QVW Type' FROM dbo.S

当我将值从暂存表插入主表时,我试图防止重复。我只有两个组件:一个指向OLE DB目标的OLE DB源

在OLE DB源代码中,我最初有以下内容:

SELECT [QVW Names] as 'QVW Name', '1' as 'QVW Type'
FROM dbo.STG_QVD_Generator
WHERE [QVW Names] <> ''
UNION
SELECT [QVW Names] as 'QVW Name', '2' as 'QVW Type'
FROM dbo.STG_Data_Models
WHERE [QVW Names] <> ''
为了防止重复,我使用SQL Server Management Studio研究并开始测试一个新查询,我能够得到以下结果:

MERGE INTO QVW_Files AS tbl 
USING (SELECT [QVW Names] as 'QVW Name', '1' as 'QVW Type'
       FROM dbo.STG_QVD_Generator
       WHERE [QVW Names] <> ''
       UNION
       SELECT [QVW Names] as 'QVW Name', '2' as 'QVW Type'
       FROM dbo.STG_Data_Models
       WHERE [QVW Names] <> '') AS src 
ON (tbl.QVW_Name = src.[QVW Name] AND tbl.QVW_Type_ID = src.[QVW Type]) 
WHEN NOT MATCHED THEN  
    INSERT (QVW_Name, QVW_Type_ID) 
    VALUES (src.[QVW Name], src.[QVW Type]);
而且它似乎可以防止从暂存表向目标表中输入重复项。然而,我将它输入到我的OLEDB源代码中,我意识到它不会返回任何列,因为这实际上不是SELECT语句。如何将其合并到数据流任务中


谢谢。

您可以在SSIS中使用合并或合并联接转换。创建数据流任务,将每个源表设置为OLE DB源对象,然后使用“合并”或“合并联接”,然后设置目标表。

为什么不使用SQL任务进行合并呢。将其添加到数据流之后。

您可能希望在语句中使用控制流上的执行SQL任务。@AlekseyRatnikov,这是一个非常好的主意。谢谢可能重复的