假设表的结构如下:
ID    数据
----------------
1     22.3
2     45.2
3     58.8
5     287.0
9     239.1现在又采集上来大批的数据放在内存里或文本文件里,接下来要把数据送进表里,要求:对于已存在的ID更新记录(update),新的ID则添加(insert)
请问如何操作最快?

解决方案 »

  1.   

    --写一个存储过程,通过存储过程调用来插入
    create proc dbo.PrcLoadData
    @intId int,
    @numData int
    as
    set nocount on
    if exists(select 1 from T_Data where ID=@intId)
    update T_Data set Data=@numData where Id=@intId
    else
    insert T_Data select @intId,@numData
    Go
    --  调用存储过程
    exec dbo.PrcLoadData 10,66.5
    Go
      

  2.   

    对于已存在的ID更新记录(update),新的ID则添加??!!!
    这样的话,不如把原表的数据全部删除,然后 插入 。也是一样的效果,而且简单省时
      

  3.   

    mschen(Co-ok):目前我就是这么做的,但觉得单条单条地操作效率太低,所以才来咨询大家的。如果只insert的话还可以BCP或通过union select一次插入多条来提高效率,问题在于update,不知有没批量更新的功能?我现在想到可以把这批数据分成insert和update两组,各自操作。
    freecs(北狼):新数据的ID不完全囊括旧数据的ID,全部删除会造成丢失。
    多谢各位,请大家接着出主意,今晚散分