在sql表之间复制数据

时间:2013-03-26 00:16:18

标签: sql sql-server sql-server-2012

我正在使用sql server 2012并拥有一个数据库。

在这个数据库中,我有2个表。 1表后端到实时数据。另一个完全相同的结构,但一个临时表 - 没有实时系统解决它。

我想编写一个sql查询,将其包含在针对登台表运行的存储过程/ sql作业中,并将数据更新/插入到实时表中。如果记录存在于实时表中,则更新它,如果没有插入它。由于临时表在每天需要运行时可能有~100,000 - 我担心性能,特别是实时表被锁定的可能性。在查询运行时,有可能从另一个源更新实时表,因此可能需要在行级别进行锁定。

我已经概述了这个过程和我的关注,所以我希望在编写查询时提供帮助。我不需要影响实时表的性能,但不确定在传输数据时没有其他系统更新每行的行。我怎么能用sql做这个?

1 个答案:

答案 0 :(得分:1)

您想要合并:

merge into Emp2 as Target
    using emp as Source on Target.FirstName=Source.Firstname and Target.LastName=Source.lastName
    when matched then 
        update set Target.FirstName=Source.FirstName,
                        Target.LastName = Source.LastName
    when not matched then
        insert (FirstName,LastName, LastTraining) values (Source.FirstName,Source.LastName,Source.LastTraining);