oracle批量删除某用户下的表
2024-08-25 09:13:40
昨天干了一天的体力活,到快下班时被要求删除一批测试库上错误的表,主要是这些表的字段和生产上字段顺序对不上,然后让我写个脚本,让dba执行一下,主要是删表这种东西我们都没权限.
然后,我就被难到了,我记得以前都是删一个表啊,还没有批量删过表啊,而且以前删表都是先删除约束再删表的,难道这次让我去把每个表的约束和表名找出来写成一个个删除语句?心想这得加班到明天啊,于是乎网上肯定有oracle的批量删除表脚本吧.
然后找啊找,找了十多个,要么是脚本本身有错,要么还是不成功,最后发现是我的ip没有权限,不过能用的脚本还是锁定了一个,因为我在另外有删除权限的用户下建了一批表通过这个脚本能删除,
这个脚本就是
Begin
for a in (select * from user_constraints t where t.OWNER = 'PERI' and upper(t.TABLE_NAME) like 'TEMP_P4%' ) loop
execute immediate 'alter table '|| a.table_name ||' drop constraint '|| a.constraint_name;
end loop; for x in (select * from all_tables t where t.OWNER = 'PERI' and upper(t.TABLE_NAME) like 'TEMP_P4%') loop
execute immediate 'drop table ' || x.table_name;
end loop;
end;
我上面是删除peri用户下TEMP_P4开头的表,第一个循环删除约束,第二个循环删除表
这个脚本有个缺陷,那就是只能用peri用户登录才能正确执行第一个循环.
到了今早,就是别人给我指出来这个问题,然后我看他怎么写脚本,然后我就惊讶了
drop table ....;
drop table ....;
drop table ....;
drop table ....;
drop table ....;
drop table ....;
......
我说你不用删除约束的吗?
他说他们以前都只删表就行,不用删约束.
好吧,这个我还是赚的,至少我知道了在这里怎么批量删除表,也知道了以后去其它地方怎么批量删除表.
最新文章
- html5新增标签和属性
- atitit.事件驱动的总结attilax
- webApp--cordova 系列1
- 台大《机器学习基石》课程感受和总结---Part 1(转)
- VS.net中快捷键收缩和展开代码段
- Android启动画面实现
- shell echo打印换行的方法
- Node.js&;NPM的安装与配置(转)
- wpf 中自定义控件及其使用
- simplify the life ECMAScript 5(ES5)中bind方法简介
- 前端之JavaScript--基础
- 并发concurrent---3
- kernel:NMI watchdog: BUG: soft lockup - CPU#6 stuck for 28s! CentOS7linux中内核被锁死
- ECharts导出word 图表模糊失真
- TensorFlow中的设备管理——Device的创建与注册机制
- Web组件流畅拖动效果
- python对象、引用
- Qt+QGis二次开发:打开S-57格式(*.000)电子海图数据,并设置多边形要素的显示风格
- python 虚拟环境操作 virtualenv +virtualenvwrapper
- JAVAEE——SpringBoot日志篇:日志框架SLF4j、日志配置、日志使用、切换日志框架