如何快速删除数据库中所有表的数据而保留表结构?

hellokittyhappy 2005-10-18 05:26:54
如题!
...全文
1355 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttjacky 2005-10-20
  • 打赏
  • 举报
回复
set heading off
set linesize 300
spool my_com.sql

select 'TRUNCATE '||table_name||';' from all_tables
WHERE ...(条件……);

spool off
start my_com.sql

=======================
这个办法好,生成一个脚本,然后自己可修改后再运行
hellokittyhappy 2005-10-20
  • 打赏
  • 举报
回复
越说越糊涂了,我使用system用户,该用户下的系统表里的数据可以删除吗?
hellokittyhappy 2005-10-19
  • 打赏
  • 举报
回复
多谢grica()!不知道WHERE 条件中如果只想选出非系统表该如何写条件呢?
grica 2005-10-19
  • 打赏
  • 举报
回复
2
set heading off
set linesize 300
spool my_com.sql

select 'TRUNCATE '||table_name||';' from all_tables
WHERE ...(条件……);

spool off
start my_com.sql
hellokittyhappy 2005-10-19
  • 打赏
  • 举报
回复
1 用TRUNCATE 表名;命令需要一个表一个表的删除,是否太慢了如果表很多的情况下?
2 Alkeen()
select 'TRUNCATE '||table_name||';' from all_tables;
上面这句spool出来,执行就行了。
能否具体说一下怎么spool出来,怎么执行呢?初学!
3 hevin(没有什么是不可能的)
也可以用exp、imp导入导出的时候设置参数rows=n,不导出或导入数据。
rows =n导出难道原来数据库的数据就会变没有吗?如果原来表中有数据,导入时rows=n,
原来的数据酒会变没有吗?我是觉得很奇怪。具体怎么做呢?
4 由于原来是在system表空间做的数据库,那么all_tables中是否包括了系统表呢?如果里面
的数据也被清空是否有问题呢?





Alkeen 2005-10-19
  • 打赏
  • 举报
回复
如果只是truncate本用户下的表,直接用 user_tables 吧。简单!

如果还有其他的,就根据owner来处理
hevin 2005-10-18
  • 打赏
  • 举报
回复
也可以用exp、imp导入导出的时候设置参数rows=n,不导出或导入数据。
shuixian0626 2005-10-18
  • 打赏
  • 举报
回复
写个过程,过程用动态SQL。用游标选择出表名(
CREATE OR REPLACE AAA IS
CURSOR A IS
SELECT * FROM ALL_TABLES;
SQLSTR VARCHAR2;
BEGIN
FOR VAR IN A LOOP
SQLSTR :='TRUNCATE TABLE ' + VAR.TABLE_NAME ;
.
.
Alkeen 2005-10-18
  • 打赏
  • 举报
回复
select 'TRUNCATE '||table_name||';' from all_tables;

上面这句spool出来,执行就行了。
xjqqxjqq 2005-10-18
  • 打赏
  • 举报
回复
同意楼上的
TRUNCATE 表名;
roseandwort 2005-10-18
  • 打赏
  • 举报
回复
TRUNCATE (清空表里的所有记录, 保留表的结构)

TRUNCATE 表名;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧