由于工作需要,要将数据库中的某一用户名下的所有表删除,而公司所使用的是SqlDeveloper客户端而非PL/SQL客户端,故而需要使用SQL语句进行删除。
分为如下步骤:
1.获取表名,并生成Drop语句
2.执行Drop语句,递归1,2步骤直至全部表清空或只余下无法删除的表
3.对于无法删除的表,需要通过alter修改其参数,再执行删除语句
4.确认所有的表都已经被删除
1.获取全部的表名:USERNAME参数为用户名,部分数据库不需要以用 户名.表名的形式删除,则可省略第一个USERNAME参数
SELECT 'DROP table USERNAME.'||table_name||';' FROM all_tables WHERE owner='USERNAME';
2.第一个SQL语句批量查询了数据库中的所有表,并生成了Drop语句.批量执行该DROP语句,即可对数据库中的表进行删除。但有部分表存在无法删除的情况,需要对1,2两步递归执行,直至全部删除或只余下部分不可删除的部分。
3.通过alter语句修改表的结构与状态,删除无法通过常规方式删除的表
alter session set events'10851 trace name context forever,level 1';
4.检索表,确认全部删除完成
// TO-DO Java代码实现对Oracle数据库的表全删,通过properties获取数据库连接参数。