达梦通过命令行批量删除表
先保存下面的内容为 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
浙公网安备 33010602011771号