我使用的是sql server,如何把5000条数据,循环插入到一个表。 5

我需要的是写一个存储过程,把这个5000条记录分为30天,相当于每天插入5000/30条,每个月循环一次上述。一般是循环五个月左右。请问怎么做好。我使用游标,并且遍历游标... 我需要的是写一个存储过程,把这个5000条记录分为30天,相当于每天插入5000/30条,每个月循环一次上述。一般是循环五个月左右。请问怎么做好。我使用游标,并且遍历游标。但是速度太慢。求大神赐教。 展开
 我来答
射手幽灵伊
2015-02-05 · TA获得超过2715个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1920万
展开全部
你用游标,拼成一个批执行的语句。
比如你现在是
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式