达梦通过命令行批量删除表

先保存下面的内容为 SQL 脚本:

DECLARE
SCH_NAME VARCHAR(20) := 'YOUR_SCHEMA'; -- 替换为要删除表的模式名
TAB_NAME VARCHAR(100);
SQL1 VARCHAR(500);
SQL2 VARCHAR(500);
C1 CURSOR;
BEGIN
-- 使用 USER_TABLES 视图查找用户下的表
SQL1 := 'SELECT TABLE_NAME FROM USER_TABLES;';
OPEN C1 FOR SQL1;
LOOP
FETCH C1 INTO TAB_NAME;
EXIT WHEN C1%NOTFOUND;
SQL2 := 'DROP TABLE "' || SCH_NAME || '"."' || TAB_NAME || '";';
EXECUTE IMMEDIATE SQL2;
END LOOP;
CLOSE C1;
END;
/

DECLARE 定义了变量和游标。SQL1 用于获取要删除的表的名称。

执行时,打开游标 C1 执行 SQL1。LOOP 循环遍历游标中的每一行,执行 SQL2 删除表。EXIT WHEN C1%NOTFOUND;表示当没有更多行时退出循环。

然后切换到达梦的bin目录:

cd /path/to/your/dmdbms/bin/

执行如下命令进入 SQL 命令行:

./disql USER_NAME/\"PASS_WORD\"@localhost:5236

加两个\"是处理密码中存在@之类的特殊字符的情况

然后先执行set define off;来禁用 SQL 命令行中的特殊字符,再执行上面的 SQL 脚本:

SQL> set define off;
SQL> start /path/to/your/script.sql
posted @   Higurashi-kagome  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2022-02-07 JavaScript 正则替换中的美元符($)
2022-02-07 对土的三相关系的一种理解
点击右上角即可分享
微信分享提示