用新的SQL Server表替换sql server表

时间:2012-06-20 20:34:19

标签: sql-server-2008 tsql stored-procedures

我想用我的sql server数据库中的表“Met”替换来自应用程序的新数据表。 我的基本思路是循环新表中的每一行并比较现有表。

我使用了存储过程,但它只具有“插入”和“更新”功能。我是否需要先删除旧表?

由于

对于每一行,我想循环以下存储过程。

;WITH CTE AS (SELECT skey=@skey,ProbMetID=@ProbMetID,Interval=@Interval,Counts=@Counts)
MERGE Met AS TARGET
USING CTE SOURCE
ON SOURCE.skey = TARGET.skey
WHEN MATCHED THEN
UPDATE
SET ProbMetID = SOURCE.ProbMetID,
    Interval = SOURCE.Interval,
    Counts = SOURCE.Counts,
    WHERE skey = @skey
WHEN NOT MATCHED THEN    
INSERT INTO Met(skey,ProbMetID,Interval,Counts)
VALUES(@skey,@ProbMetID,@Interval,@Counts); 

1 个答案:

答案 0 :(得分:1)

MERGE语句包含DELETE函数。查看Pinal Dave的帖子:http://blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one-statement-for-insert-update-delete/

我发现从app层执行此操作的最简单方法是将所有内容插入临时表,然后在临时表和实际表之间执行整个MERGE操作。最重要的是,您可以在一次交易中完成整个事情。此外,您可以将应用程序表批量插入到临时表中,以获得超级棒的db speed(TM)。