“DMS在任务编排里能否做到 删除某个库的所有表?
准备整个 存储过程
DELIMITER //
CREATE PROCEDURE drop_all_tables()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE tableName VARCHAR(255);
DECLARE cur CURSOR FOR
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'xxxx';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SET FOREIGN_KEY_CHECKS = 0;
OPEN cur;
read_loop: LOOP
FETCH cur INTO tableName;
IF done THEN
LEAVE read_loop;
END IF;
SET @dropStmt = CONCAT('DROP TABLE IF EXISTS `', tableName, '`;');
PREPARE stmt FROM @dropStmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur;
-- 在删除表之后,将外键检查设置为 1,重新启用外键约束检查
SET FOREIGN_KEY_CHECKS = 1;
END;
//
— 设置分隔符为默认值
DELIMITER ;
任务执行失败:
DMS不支持当前语句的执行,请更换语句或使用其他工具代替,语句类型…UNKNOW
但是 我用 SQL console 是能执行的。”
“是要前面加一个 delimiter //,end;改成end;// 然后再加一行 delimiter ; 类似这样的。
此回答整理至钉群“阿里云DMS数据管理用户交流群”。”