oracle中删除指定前缀的表

近期接手做的项目,发觉数据库中有许多多余的表。究其原因,应该是同事贪图方便,将过去做过的项目复制粘贴,然后修修改改。包括数据库也是克隆过来的,然后又没有删除本项目多余的表,结果经过几个轮回,就不知道哪些表需要,哪些不需要了。

本来不管它,也不会报错,问题是,表实在太多了,密密麻麻,想找某个表,费时费力,也不利于对本项目的理解和把握。咬咬牙,我辛苦一点,清理一下。

幸而大部分表,创建时都加了前缀,比较好识别。那么,删除时有没有可能按照指定的表名前缀,查找出来,然后删除呢?一言不合问AI,AI说可以,噌噌噌给了我一段脚本,说运行这段脚本就能删除指定前缀的表。不过我想稍为改动一下,改为利用脚本生成删除表语句,然后再手动执行。我本能地觉得,删表可不是开玩笑,尽管这是在开发环境,也做了备份,但还是看看生成的删表语句,审核一下,然后再手动运行比较稳妥。后来发现,幸亏是这么做了,因为AI给出的脚本,过滤条件有点不靠谱,指定前缀的表包括进去了,但跟前缀有点像的表也包括进去了,如果直接运行的话,会将一些无辜的表也删掉,殃及无辜。

思路:

1、备份数据库

2、写一个脚本,生成删除表语句

3、运行删除表语句

1、备份数据库

略过不提

2、写一个脚本,生成删除表语句

脚本如下:

DECLARE

v_sql VARCHAR2(4000);

BEGIN

FOR rec IN (SELECT table_name

FROM user_tables

WHERE table_name LIKE 'JSJC_%')

LOOP

v_sql := 'DROP TABLE ' || rec.table_name || ' CASCADE CONSTRAINTS;';

DBMS_OUTPUT.PUT_LINE(v_sql);

END LOOP;

END;

/

注意在PL/SQL Developer中,需在test windows下运行这段脚本:

3、运行这些删除语句

我认为需要将这些删除语句留底保存,以备日后查验。

4、小结

其实现在回想起来,在PL/SQL的图形界面上直接删除岂不更快?但我又不想这么做,也许是怕手一抖,删错了吧。

相关推荐
亚历克斯神12 小时前
Flutter for OpenHarmony: Flutter 三方库 mongo_dart 助力鸿蒙应用直连 NoSQL 数据库构建高效的数据流转系统(纯 Dart 驱动方案)
android·数据库·flutter·华为·nosql·harmonyos
加农炮手Jinx12 小时前
Flutter for OpenHarmony:postgres 直连 PostgreSQL 数据库,实现 Dart 原生的高效读写(数据库驱动) 深度解析与鸿蒙适配指南
网络·数据库·flutter·华为·postgresql·harmonyos·鸿蒙
全栈小512 小时前
【数据库】Sql Server 安装教程,一键到底,沉浸式下载安装MSSQL和SSMS
数据库·sqlserver
顶点多余12 小时前
mysql---索引特征 (重要)
数据库·mysql
数据知道12 小时前
MongoDB灾难恢复计划:RTO/RPO目标下的应急响应完整方案
数据库·mongodb·wpf
匀泪12 小时前
云原生(Redis配置)
数据库·redis·缓存
shuair12 小时前
redis执行lua脚本
数据库·redis·lua
Andytoms12 小时前
错误信息:请在mysql配置文件修sql-mode或sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
数据库·sql·mysql
ChaITSimpleLove13 小时前
PostgreSQL(简称 pgsql)数据库的启动与关闭
数据库·postgresql·start·stop·reload·restart
数据知道13 小时前
MongoDB的Kerberos认证:详细讲述大型企业环境安全集成的实用技术
数据库·安全·mongodb