Oracle清空数据库中数据表数据的方法

数据库 专栏收录该内容
23 篇文章 2 订阅

一、简介

最近在项目发版测试的时候,导出dmp的时候不小心把开发库中的一些脏数据导出来了,测试那边导入进去之后一堆不规范的数据,为了不影响测试结果,于是总结了一个快速清空数据库数据表所有数据的方法。

二、方法

(1). 第一种方法:分步骤实现

 【a】第一步:禁止所有的外键约束.

打开plsql ,新建一个查询窗口,输入:

SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' ||

       constraint_name || ';'

  FROM user_constraints

 where CONSTRAINT_TYPE = 'R';

打开能执行sql的窗口即可

【b】第二步:用delete或truncate删除所有表的内容

SELECT 'DELETE FROM ' || table_name || ';'

  FROM USER_TABLES

 ORDER BY TABLE_NAME;

【c】第三步:启用所有的外键约束

SELECT 'ALTER TABLE ' || table_name || ' enable CONSTRAINT ' ||

       constraint_name || ';'

  FROM user_constraints

 where CONSTRAINT_TYPE = 'R';

依次执行完这三个步骤之后,发现数据库中所有的数据表的数据都清空。

(2).第二种方法:执行脚本生成的sql,然后统一执行

【a】打开plsql查询窗口,执行如下plsql脚本

begin
  dbms_output.put_line('--禁用外键SQL【开始】');
  for var1 in (SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' ||
                      constraint_name || ';' as sqltext
                 FROM user_constraints
                where CONSTRAINT_TYPE = 'R') loop
    dbms_output.put_line(var1.sqltext);
  end loop;
  dbms_output.put_line('--禁用外键SQL【结束】');
  dbms_output.new_line;

  dbms_output.put_line('--删除表记录SQL【开始】');
  for var1 in (SELECT 'DELETE FROM ' || table_name || ';' as sqltext
                 FROM USER_TABLES
                ORDER BY TABLE_NAME) loop
    dbms_output.put_line(var1.sqltext);
  end loop;
  dbms_output.put_line('--删除表记录SQL【结束】');
  dbms_output.new_line;

  dbms_output.put_line('--启用外键SQL【开始】');
  for var1 in (SELECT 'ALTER TABLE ' || table_name || ' enable CONSTRAINT ' ||
                      constraint_name || ';' as sqltext
                 FROM user_constraints
                where CONSTRAINT_TYPE = 'R') loop
    dbms_output.put_line(var1.sqltext);
  end loop;
  dbms_output.put_line('--启用外键SQL【结束】');
  dbms_output.new_line;
end;

【b】然后在output这个tab中复制出所有的sql

【c】统一执行sql:

推荐使用第二种方法,更加简单方便,但是如果在生产环境中的话,凡是涉及到删除数据的都要谨慎操作,防止用户的数据丢失,如果大家在有需要清空数据的时候可以考虑使用该方法。

 

 

  • 2
    点赞
  • 0
    评论
  • 17
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值