首页 新闻 会员 周边 捐助

sql2000中求批量插入数据语句

0
悬赏园豆:15 [待解决问题]

要求插入100000条数据用如下的代码那个效率太低了。

服务器配置内存 256MB,应该是好几年前的电脑了。


declare @a int
set @a=0
while @a<100000
begin
   insert into TbPerson(CoName,CoSex,CoMark) values('AAAA','男','CCCCCC')
   set @a=@a+1
END

 

 

有没有更高效率的插入语句? 插入的内容都一样的,如上所示 AAAA,男,CCCCC

wunaigong的主页 wunaigong | 初学一级 | 园豆:4
提问于:2012-04-07 09:38
< >
分享
所有回答(4)
0

你这个已经是比较简单的写法了,如果你的数据库中有某张表有100000条数据(数据内容任意),你可以这样写:

insert into TbPerson select top 100000 'AAAA','','CCCCCC' from #t

#t就是有 100000 条数据的那张表,如果没有就找个数据多点的,多执行几次

artwl | 园豆:16736 (专家六级) | 2012-04-07 10:06

有没有更高效的写法?

我用自己写的插入语句。

插入10万条数据要好几分钟啊。

支持(0) 反对(0) wunaigong | 园豆:4 (初学一级) | 2012-04-07 12:16
0
邀月 | 园豆:25475 (高人七级) | 2012-04-07 17:35
0

使用System.Data.SqlClient.SqlBulkCopy代替insert

System.Data.SqlClient.SqlBulkCopy 提供WriteToServer(datatable)提交数据。

首先,在内存建立一个datatable,当然可以直接通过select出来。

然后,循环加往table中入数据

几秒钟时间变可以完成。与insert不同的是,该提交方法,只有生成一条sql语句。速度当然很快。

具体方法,可以查看微软的官方文档。

lucika.zh | 园豆:54 (初学一级) | 2012-04-11 11:44
0
使用如下写法,应该很快。
insert
into TbPerson select 'AAAA','','CCCCCC' from ( select number from master..spt_values where type='P' and number<1000 ) A cross join ( select number from master..spt_values where type='P' and number<100 ) B
小材小用 | 园豆:639 (小虾三级) | 2012-04-25 12:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册