如何一次批量清除所有TABLE中的数据

[复制链接]
查看11 | 回复9 | 2010-3-1 11:20:52 | 显示全部楼层 |阅读模式
因为起一个新的数据库,用户常常要试用一段时间,然后需要把所有TABLE中的数据清除,再让用户重新输入数据并开始运行。
请问如何一次批量清除所有TABLE中的数据?
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
select 'truncate table '||tname||' ;' from tab;
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
这样只能查出数据,我要删除表,还有就是不能把系统表给清除了
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
你指的是那种系统表,是应用用户下的系统表呢,还是sys下的,如果要删除数据,用truncate是不行的,因为对于一个实际的生产系统,表间都有主外键关联的,除非先disable掉
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
exp 只导出表结构 ,rows=N,参数好象可以的,drop 掉表,再IMP
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
楼上的方法可行。truncate 所有表也不错。
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
这个我以前做过,写了一个procedure 大体思路:根据主外建关系排序,先删除优先级别低的表(即子表),再删除优先级别高的表(即父表),,循环删除。
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
使用Exp和Imp,或者写个procedure:disable外键,truncate表,再enable外键。
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
execute immediate ' truncate table where table_name in ( select table_name from user_tables )'
回复

使用道具 举报

千问 | 2010-3-1 11:20:52 | 显示全部楼层
这样就ok 了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行