我使用的是sql server,如何把5000条数据,循环插入到一个表。 5
我需要的是写一个存储过程,把这个5000条记录分为30天,相当于每天插入5000/30条,每个月循环一次上述。一般是循环五个月左右。请问怎么做好。我使用游标,并且遍历游标...
我需要的是写一个存储过程,把这个5000条记录分为30天,相当于每天插入5000/30条,每个月循环一次上述。一般是循环五个月左右。请问怎么做好。我使用游标,并且遍历游标。但是速度太慢。求大神赐教。
展开
展开全部
你用游标,拼成一个批执行的语句。
比如你现在是
insert into () values ();每句执行一次,
改成,先在游标里把语句拼成
insert into ()
select ...
union select ...
union select ... 这种形式,然后在游标外执行一次就可以了。
比如你现在是
insert into () values ();每句执行一次,
改成,先在游标里把语句拼成
insert into ()
select ...
union select ...
union select ... 这种形式,然后在游标外执行一次就可以了。
追问
其实我开始说的5000只是一个具体的数,而我这边实际是从一个表中读取的,我使用的是while循环遍历游标。也用到了if循环。但是效率觉得好差,执行时间太久。
追答
你可以先count(1)一下表,算出数据合计数,然后算一下本月天数,计算一下每天处理的数据量,比如是X
然后设置一个变量@i,循环小于本月天数,
每次写入到另一个表的数据使用 row_number() 来 between and
insert into tablename ()
select col1,....
from ( select *,ROW_NUMBER() over ( order by id_col ) 序号 from tablename ) a
where 序号 between @i * X + 1 and ( @i + 1 ) * X
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询