如何删除大量数据 sql server2005 数据量在8千万左右??
如何删除大量数据sqlserver2005,数据量在8千万左右!用什么脚本能快速查询同记录数?请给予详细说明.总记录数1亿3千万,不是整表删除,只是需要删除top前8千万...
如何删除大量数据 sql server2005,数据量在8千万左右!
用什么脚本能快速查询同记录数?
请给予详细说明.
总记录数1亿3千万,不是整表删除,只是需要删除top前8千万,导出最新的1千5百万。 展开
用什么脚本能快速查询同记录数?
请给予详细说明.
总记录数1亿3千万,不是整表删除,只是需要删除top前8千万,导出最新的1千5百万。 展开
展开全部
你要整表删除吗,那么你用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来做。
效率很高。
如果要加条件,就只好用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来做。
效率很高。
展开全部
写个一次删除5000的脚本,然后跟工作调度里30秒运行一次。。。。
新人看答案。呵呵
新人看答案。呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法一:用delete ,
这么大量的数据删除,不希望你用其他程序去完成,会超时的。
你就新建一个查询,再写入查询句
你一定会有一个键的,比如identity就更好了,
delete tb
where id <80000000
删除之前先确认一下数据库文件的增长,设为不受限制,日志文件也一样。
完成删除之后,收缩一下数据库
方法二:
改表名,
用数据导入的方法,将要保留的数据用查询导出到原表名,再设置回键索引信息,
再删除旧表。
这么大量的数据删除,不希望你用其他程序去完成,会超时的。
你就新建一个查询,再写入查询句
你一定会有一个键的,比如identity就更好了,
delete tb
where id <80000000
删除之前先确认一下数据库文件的增长,设为不受限制,日志文件也一样。
完成删除之后,收缩一下数据库
方法二:
改表名,
用数据导入的方法,将要保留的数据用查询导出到原表名,再设置回键索引信息,
再删除旧表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
批量删除数据库中重复数据
删除公式:
delete from 表名
where 字段一 in
(select min(字段一)
from 表名
group by 字段一, 字段二, 字段三, 字段四, 字段五
having (count(*) > 重复值) and (字段一 > 0))
实际代码:以ASP默认VB为例
<!--#include virtual="/include/conn.asp" --> '引用数据库
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<%set rsdel=conn.execute("delete from poject_zl where title in(select min(title) from poject_zl group by title having (count(*) > 1))") '执行命令
%>
删除公式:
delete from 表名
where 字段一 in
(select min(字段一)
from 表名
group by 字段一, 字段二, 字段三, 字段四, 字段五
having (count(*) > 重复值) and (字段一 > 0))
实际代码:以ASP默认VB为例
<!--#include virtual="/include/conn.asp" --> '引用数据库
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<%set rsdel=conn.execute("delete from poject_zl where title in(select min(title) from poject_zl group by title having (count(*) > 1))") '执行命令
%>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询