日期:2014-05-18  浏览次数:20592 次

如何批量插入数据(sql server 2005)
SQL code
INSERT INTO [Relation]([CustomerId],[UserId],[CreateDate])
SELECT [Id],1,GETDATE() FROM [Customers]


现在Customers表有20多万条数据,也就是说这条语句要一次性往Relation表插入20多万条数据,要执行好长一段时间。请问有其他更好的办法实现相同的效果吗???

------解决方案--------------------
20万数据 不用很长时间吧
我也这么执行的

这语句已经很简单了,求高手优化!!!
------解决方案--------------------
哈哈 扣了
------解决方案--------------------
SQL code
SET ROWCOUNT 1000; INSERT INTO [Relation]([CustomerId],[UserId],[CreateDate]) SELECT [Id],1,GETDATE() FROM [Customers] WHILE @@ROWCOUNT=1000 INSERT INTO [Relation]([CustomerId],[UserId],[CreateDate]) SELECT [Id],1,GETDATE() FROM [Customers]  SET ROWCOUNT 0;

------解决方案--------------------
一般都這樣做,應該用不了多久,若Relation表有觸發器,把你的trigger禁用掉吧,這樣會快些
SQL code

alter table Relation disable trigger all
--完成後
alter table Relation enable trigger all

------解决方案--------------------
探讨
我纳闷,为啥我只发一条帖子,他却给我生成了两个贴???今天过节?买一送一???不会扣了我两个帖子的积分吧??

------解决方案--------------------
探讨
SQL code

SET ROWCOUNT 1000; INSERT INTO [Relation]([CustomerId],[UserId],[CreateDate]) SELECT [Id],1,GETDATE() FROM [Customers] WHILE @@ROWCOUNT=1000 INSERT INTO [Relation]([CustomerId],[UserId],[C……

------解决方案--------------------
插入慢的主要原因通常是插入过程中还做了其他事情,首要之一就是维护索引或者有触发器,对此你可以先禁用,让其能顺利插入,再启用。成熟的DBMS对大数据量插入的性能都不会很低,听说BCP可能达到100万行每秒。而我以前做银行系统(OLAP)的时候,往往都是千万级别插入。性能也不见得低。