sql server 执行循环插入100万条数据,当插入10万条左右时内存溢出了 5

应该如何处理?declare@iintselect@i=1while(@i<1000000)begindeclare@strvarchar(20)select@str=C... 应该如何处理?
declare @i int
select @i=1
while(@i<1000000)
begin
declare @str varchar(20)
select @str=CONVERT(varchar(20),@i)
print '--'+@str
insert into book3 values('a'+@str,'b'+@str,'c'+@str,'d'+@str,'e'+@str,'2-12-2012')
set @i=@i+1
end
go
select * from book3
go
展开
 我来答
kennychenxiang
2012-11-02 · TA获得超过201个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:180万
展开全部
CREATE TABLE #ta(A1 int,ID bigint NOT NULL IDENTITY(1,1));go
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;
INSERT INTO #ta(A1) select 1
WHILE @rc < ceiling(log(@max) / log(2))
BEGIN
INSERT INTO #ta(A1) SELECT 1 FROM #ta;
SET @rc = @rc + 1 ;
END
select @max = @max - @@IDENTITY

INSERT INTO #ta(A1)
SELECT 1 FROM #ta where id <= @max

insert into book3
select 'a'+ltrim(str(id)),'b'+ltrim(str(id)),'c'+ltrim(str(id)),'d'+ltrim(str(id)),'e'+ltrim(str(id)),'2-12-2012'
from #ta
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_冰河
2012-11-04 · 超过18用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:34.7万
展开全部
都没有控制COMMIT

每1W条记录COMMIT一次就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a19910403
2012-11-02 · 超过21用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:75.1万
展开全部
每插入一部分,commit一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-02
展开全部
分批插入
追问
我不知道怎么写,能不能帮我把代码发一下?
追答
select @i=1
while(@i<1000000)
--
select @i=1000000
while(@i<2000000)
每次插入10w
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式