现在的位置: 首页 > 综合 > 正文

如何删除大量数据 sql server2005

2013年10月02日 ⁄ 综合 ⁄ 共 593字 ⁄ 字号 评论关闭
你要整表删除吗,那么你用truncate table 可以瞬间删除所有记录,但是这个不记录log,无法回滚。也不能加条件。
如果要加条件,就只好用delete了,或者就是用DTS把你所要的表导出到文本,然后清空表,再把文本导回表中。

你用sp_spaceused 'talbe_name'可以迅速查到你要的记录数,及表所占的空间。 

truncate table table_name
delete table_name where .........
sp_spaceused 'table_name' 

如果这样你可以用bcp先导出你要的5千万数据
先count(*)你的记录然后-8kw=@num
1、在cmd下,导出你要保留的记录到文本data_1中
E:\>bcp  "select top @num * from db.dbo.table order by id desc" queryout data_1.txt -c -t "|" -r \n -U sa -P password
2、truncate table table_name   ---trun掉你的表
3、将 data_1.txt 的数据导入到table中
      E:\temp>bcp db.dbo.Table in data_1.txt -b 5000 -c -t ",|" -r \n -U sa -P password
4、ok搞定
速度绝对比delete快不知道多少倍。
而且日志也比较小。

然后你要高出1千五百万也可以用bcp来做。
效率很高。

抱歉!评论已关闭.