Oracle中快速删除所有表数据
⼀、禁⽌所有的外键约束
在pl/sql developer下执⾏如下语句:
SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';
把查询出来的结果拷出来在pl/sql developer时执⾏。
若没有pl/sql developer,可以在sqlplus⾥操作,⽅法如下:
1. 打开sqlplus,并⽤相应的⽤户连接。
2. 把pagesize设⼤点,如set pagesize 20000
3. ⽤spool把相应的结果导到⽂件时,如
SQL> spool /home/oracle/constraint.sql
SQL> SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';
SQL> spool off
4. 已经⽣成了包含相应语句的脚本,不过脚本⽂件⾥的最前和最后⾯有多余的语句,⽤⽂本编辑器打开,并删除没⽤的语句即可truncate delete区别
5. 重新⽤相应的⽤户登录sqlplus,执⾏如下命令
SQL> @/home/oracle/constraint.sql
⼆、⽤delete或truncate删除所有表的内容
SELECT 'DELETE FROM '|| table_name || ';' FROM USER_TABLES
ORDER BY TABLE_NAME;
SELECT 'TRUNCATE TABLE '|| table_name || ';' FROM USER_TABLES
ORDER BY TABLE_NAME;
⽤第⼀步类似的⽅法操作。要注意的⼀点是,若表的数据有触发器相关联,只能⽤truncate语句,不过truncate语句不能回滚,所以时要注意三、把已经禁⽌的外键打开
SELECT 'ALTER TABLE ' || table_name || ' enable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。