博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SQL语句清空数据库所有表的数据
阅读量:7180 次
发布时间:2019-06-29

本文共 897 字,大约阅读时间需要 2 分钟。

近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER.

1.搜索出所有表名,构造为一条SQL语句

declare
 
@trun_name
 
varchar
(
8000
)
set
 
@trun_name
=
''
select
 
@trun_name
=
@trun_name
 
+
 
'
truncate table 
'
 
+
 
[
name
]
 
+
 
'
 
'
 
from
 sysobjects 
where
 xtype
=
'
U
'
 
and
 status 
>
 
0
exec
 (
@trun_name
)

该方法适合表不是非常多的情况,否则表数量过多,超过字符串的长度,不能进行完全清理.

2.利用游标清理所有表

 

declare
 
@trun_name
 
varchar
(
50
)
declare
 name_cursor 
cursor
 
for
select
 
'
truncate table 
'
 
+
 name 
from
 sysobjects 
where
 xtype
=
'
U
'
 
and
 status 
>
 
0
open
 name_cursor
fetch
 
next
 
from
 name_cursor 
into
 
@trun_name
while
 
@@FETCH_STATUS
 
=
 
0
begin
  
exec
 (
@trun_name
)
 
print
 
'
truncated table 
'
 
+
 
@trun_name
 
fetch
 
next
 
from
 name_cursor 
into
 
@trun_name
end
close
 name_cursor
deallocate
 name_cursor

 

这是我自己构造的,可以做为存储过程调用, 能够一次清空所有表的数据,并且还可以进行有选择的清空表.

3.利用微软未公开的存储过程

 

exec
 sp_msforeachtable "
truncate
 
table
 ?"

 

该方法可以一次清空所有表,但不能加过滤条件.

你可能感兴趣的文章
比赛注意事项
查看>>
uva-10905-贪心
查看>>
(转)Google Code SVN密码的解决之道(2010-11-14 20:36:51)转载▼
查看>>
tmux使用笔记
查看>>
Ubuntu12.04.1 LTS Installion
查看>>
Jetty 的工作原理以及与 Tomcat 的比较
查看>>
20170913-构建之法:现代软件工程-阅读笔记
查看>>
实验一 Linux开发环境的配置 20145213祁玮 20145222黄亚奇
查看>>
站立会议4
查看>>
大数据概述
查看>>
微软职位内部推荐-Software Engineer II-Search
查看>>
Java程序的安装、配置、创建项目
查看>>
欧拉函数
查看>>
20155229 2016-2017-2 《Java程序设计》第十周学习总结
查看>>
Linux驱动知识
查看>>
双端队列
查看>>
Android 自定义RadioButton的样式
查看>>
乱七八糟的小问题
查看>>
二叉树后序遍历<非递归>
查看>>
Morris图表如何重新加载数据(重绘)
查看>>