使用SQL Server 2008
我有一个SSIS任务,可以从FTP下载CSV文件并每小时重命名一次该文件。之后,我将数据批量插入到名为NEWFTPDATA的新表中。
此文件中的数据是当前时间直到当前时间。该表有一个由4个不同列组成的复合主键。
我需要完成的下一步是,使用T-SQL,将这个新表与我现有的主存档表进行比较,并根据匹配插入任何尚不存在的行(或者在这4列上不匹配)
由于我每小时都会下载此文件(用于实时报告),因此每次后续运行都会出现重复数据,我不想将其插入主表中以避免重复数据。
我已经找到了根据一个特定列的存在来做到这一点的方法,但我似乎无法根据需要匹配的4列来弄清楚如何做到这一点。
工作流程应如下
从NEWFTPDATA更新MASTERTABLE,其中MASTERTABLE中不存在newftpdata.column1,newftpdata.column2,newftpdata.column3,newftpdata.column4
希望我已经为这个问题提供了大量信息。如果需要任何进一步的细节,请告诉我。谢谢。
答案 0 :(得分:1)
您可以使用 MERGE
MERGE MasterTable as dest
using newftpdata as src
on
dest.column1 = src.column1
and
dest.column2 = src.column2
and
dest.column3 = src.column3
and
dest.column4 = src.column4
WHEN NOT MATCHED then
INSERT (column1, column2, ...)
values ( Src.column1, Src.column2,....)