SQL Update主表,每小时基于复合PK不匹配的新表数据

时间:2015-01-12 15:53:49

标签: sql-server sql-server-2008

使用SQL Server 2008

我有一个SSIS任务,可以从FTP下载CSV文件并每小时重命名一次该文件。之后,我将数据批量插入到名为NEWFTPDATA的新表中。

此文件中的数据是当前时间直到当前时间。该表有一个由4个不同列组成的复合主键。

我需要完成的下一步是,使用T-SQL,将这个新表与我现有的主存档表进行比较,并根据匹配插入任何尚不存在的行(或者在这4列上不匹配)

由于我每小时都会下载此文件(用于实时报告),因此每次后续运行都会出现重复数据,我不想将其插入主表中以避免重复数据。

我已经找到了根据一个特定列的存在来做到这一点的方法,但我似乎无法根据需要匹配的4列来弄清楚如何做到这一点。

工作流程应如下

从NEWFTPDATA更新MASTERTABLE,其中MASTERTABLE中不存在newftpdata.column1,newftpdata.column2,newftpdata.column3,newftpdata.column4

希望我已经为这个问题提供了大量信息。如果需要任何进一步的细节,请告诉我。谢谢。

1 个答案:

答案 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,....)