SQL 根据复合 PK 上的不匹配,每小时使用新 table 数据更新主 table
SQL Update master table with new table data hourly based on no match on Composite PK
使用 SQL 服务器 2008
我有一个 SSIS 任务从 FTP 下载 CSV 文件并每小时重命名该文件。之后,我将数据批量插入到名为 NEWFTPDATA.
的新 table 中
此文件中的数据是当天到当前小时的数据。 table 有一个由 4 个不同列组成的复合主键。
我需要完成的下一步是,使用 T-SQL,将这个新 table 与我现有的主存档 table 进行比较,并插入任何尚不存在的行基于匹配(或者说不匹配这 4 列)
由于我将每小时为每个后续 运行 下载此文件(用于实时报告),因此会有重复数据,我不想将其插入到主 table 中避免重复数据。
我找到了基于一个特定列的存在来执行此操作的方法,但我似乎无法根据需要匹配的 4 个列来弄清楚如何执行此操作。
工作流程应该如下
从 NEWFTPDATA 更新 MASTERTABLE,其中 newftpdata.column1、newftpdata.column2、newftpdata.column3、newftpdata.column4 在 MASTERTABLE
中不存在
希望我已经为这个问题提供了大量信息。如果需要任何进一步的详细信息,请告诉我。谢谢。
你可以使用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,....)
使用 SQL 服务器 2008
我有一个 SSIS 任务从 FTP 下载 CSV 文件并每小时重命名该文件。之后,我将数据批量插入到名为 NEWFTPDATA.
的新 table 中此文件中的数据是当天到当前小时的数据。 table 有一个由 4 个不同列组成的复合主键。
我需要完成的下一步是,使用 T-SQL,将这个新 table 与我现有的主存档 table 进行比较,并插入任何尚不存在的行基于匹配(或者说不匹配这 4 列)
由于我将每小时为每个后续 运行 下载此文件(用于实时报告),因此会有重复数据,我不想将其插入到主 table 中避免重复数据。
我找到了基于一个特定列的存在来执行此操作的方法,但我似乎无法根据需要匹配的 4 个列来弄清楚如何执行此操作。
工作流程应该如下
从 NEWFTPDATA 更新 MASTERTABLE,其中 newftpdata.column1、newftpdata.column2、newftpdata.column3、newftpdata.column4 在 MASTERTABLE
中不存在希望我已经为这个问题提供了大量信息。如果需要任何进一步的详细信息,请告诉我。谢谢。
你可以使用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,....)