我有 > 10 个包需要在数据流中更新/插入。我可以通过以下方式做到这一点:
- 查找 => 匹配输出分支 => OLE DB 命令。
- 查找 => 不匹配输出分支 => OLE DB 目标。
( http://www.rad.pasfu.com/index.php?/archives/46-SSIS-Upsert-With-Lookup-Transform.html ) ( http://jahaines.blogspot.com/2009/09/sss -执行-upsert.html )
但是,我想知道是否有某种方法可以在查找(或任何其他)组件中使用“合并”语句,以便我可以执行以下操作:
MERGE [DBPrac].[dbo].[TargetTable] AS tt
USING [SourceTable] AS st ON tt.Id = st.Id
WHEN MATCHED THEN --* Update the records, if record found based on Id.
UPDATE
SET tt.SSN = st.SSN
,tt.FirstName = st.FirstName
,tt.MiddleName = st.MiddleName
,tt.LastName = st.LastName
,tt.Gender = st.Gender
,tt.DateOfBirth = st.DateOfBirth
,tt.Email = st.Email
,tt.Phone = st.Phone
,tt.Comment = st.Comment
WHEN NOT MATCHED BY TARGET THEN --* Insert from source to target.
INSERT (Id, SSN, FirstName, MiddleName, LastName, Gender, DateOfBirth, Email, Phone, Comment)
VALUES (st.Id, st.SSN, st.FirstName, st.MiddleName, st.LastName, st.Gender, st.DateOfBirth, st.Email, st.Phone, st.Comment)
;
SELECT @@ROWCOUNT;
SET IDENTITY_INSERT [dbo].[TargetTable] OFF
GO
到目前为止,我尝试过:
- 在“自定义查询”中查找组件的“高级”窗格中,我尝试使用上述查询,但偶然发现了“SourceTable”。不知道如何在“自定义查询”中获取输入记录集(甚至不知道是否可能)。
任何帮助和/或指针都会很棒。