求助批量提交,insert语句!
有几千条记录要insert到数据库,现在做成单条循环插入的,有点慢,
想做成批量提交,应该能快点吧
请各位批点!
问题点数:50、回复次数:20Top
1 楼Kiven1978(谁隐)回复于 2005-11-08 14:42:06 得分 10
insert into 表名(字段名,N,.....)select * from 表名Top
2 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-11-08 14:42:26 得分 10
把这些数据编写成一个XML的文档格式,然后把这个XML传到数据库中,用数据库的XML处理一次性把这些内容当做一个表的内容Insert到你的数据库的表中。如果是SqlServer的话可以参见:
sp_xml_preparedocument,OPENXML和sp_xml_removedocument的用法。Top
3 楼jinjazz(近身剪)回复于 2005-11-08 14:43:01 得分 10
可用insert into 和select into
如果是倒入数据,还可以用dts工具等Top
4 楼loveyzy(菌哥)回复于 2005-11-08 14:43:44 得分 10
方法一:在查询管理器中,用
insert into 表名()
select 列名1,列名2...from 源表名
方法二:用Data Application Block的Fill方法
Top
5 楼Kiven1978(谁隐)回复于 2005-11-08 14:44:41 得分 0
注:后面的select 查询出来是多条记录,可同时插入多条,但后面查询出来的字段要合insert里的相同Top
6 楼laurel218(elvalin)回复于 2005-11-08 14:47:35 得分 0
楼上几位说的好象不是批量提交啊!
我要几千条记录批量提交到数据库啊!Top
7 楼jinjazz(近身剪)回复于 2005-11-08 14:50:11 得分 0
你的数据是怎么来的,一条条填充的话,那只能一条条的插入了Top
8 楼jerrie_1()回复于 2005-11-08 14:54:26 得分 0
不知道用SqlDataAdapter.InsertCommand可不可以,这个好像也能处理批量提交数据的。Top
9 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-11-08 14:56:12 得分 10
要想批量提交,就要批量的传到数据库中,要想批量的传到数据库中就要想办法把数据组织起来再传到数据加,怎么组织呢,用XML的格式来处理是一种方法,同时数据库是支持XML的解析的。楼主可以考虑一下这个方法嘛。Top
10 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-11-08 14:58:02 得分 0
当然用XML传入数据库用存储过程是来做是最合适的。
另外也可以考虑用数据适配器的Update方法也是可以的。不过我不喜欢用这个东西。Top
11 楼laurel218(elvalin)回复于 2005-11-08 15:04:18 得分 0
楼上的兄弟,来看一下,用XLM方法怎么做啊!
批量的数据还是动态产生的,这样可以吗?
Top
12 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-11-08 15:10:00 得分 0
当然可以了!
你可以把你的数据用XmlDocument编写成一个XML字符串,然后传到存储过程里。比如如下的一个格式就行:
<?xml version="1.0" encoding="gb2312"?>
<Root>
<Details>
<Row ID=1 Name='li' age='28' money='5000.00'/>
<Row ID=2 Name="wang' age='23' money='6000.00'/>
...
</Details>
</Root>Top
13 楼laurel218(elvalin)回复于 2005-11-08 15:11:16 得分 0
除了用XML方法,应该还有其它的批量提交方法吧Top
14 楼desailly(Grad_BeLLeck)回复于 2005-11-08 15:16:59 得分 0
学一下Top
15 楼linanwang(紫杉)回复于 2005-11-08 15:30:01 得分 0
一次写上100条插入语句用回车隔开一起执行,不就行了
====CSDN 小助手 V2.0 2005年10月16日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
下载:http://szlawbook.com/csdnv2/csdnv2.rar
为神六喝彩,向所有科技工作者致敬!
拒绝日货。Top
16 楼particle1208(岁月,自己,梦想)回复于 2005-11-08 15:37:18 得分 0
如果是B/S结构只能是一条一条的Insert进去了。因为你无论用什么控件,到最后也是要产生Insert语句提交给数据库的,因为数据库只认Sql语句。Top
17 楼weir168(爱之竹)回复于 2005-11-08 15:44:33 得分 0
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶Top
18 楼q_po_o(两个人)回复于 2005-11-08 15:46:57 得分 0
先循环插入到DateSet中,然后updataTop
19 楼JasonHeung(拥有一切不过就这样笑着哭)回复于 2005-11-08 15:47:25 得分 0
用Insert语句最快!
或者将全部Insert语句构成一个存储过程,运行后再删除该存储过程。Top
20 楼mkkii(MK)回复于 2005-11-08 16:09:07 得分 0
我也时常有大量插入资料的需求,有时一做就是30000笔资料,若一次大量插入资料库时
会耗费很多时间和资源,而且会影响到其他资料库运行,因此我的思考是相反的,为了
避免插入资料时造成资料库跑不动,我在插入资料时会使用timer或是排程(at),每3秒
钟才insert 1或2笔资料,如此一来我在插入资料时就不会造成资料库的lag了,其他程序
也可以正常运行。Top




