我正在尝试在将临时表中的值插入主表时防止重复。我只有两个组成部分:OLE DB SOURCE
指向OLE DB DESTINATION
。
在OLE DB SOURCE
中,我最初有这个:
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]);
它似乎可以防止重复项从登台表输入目标表。但是,我把它输入到我的OLE DB SOURCE
中,我意识到它不会返回任何列,因为这不是一个真正的SELECT语句。如何将其合并到我的数据流任务中?
感谢。
答案 0 :(得分:1)
您可以在SSIS中使用合并或合并连接转换。创建数据流任务,将每个源表设置为OLE DB源对象,然后使用“合并”或“合并连接”,然后设置“目标”表。
答案 1 :(得分:0)
为什么不使用SQL任务来进行合并。在数据流之后添加它。