开发者社区 > 数据库 > 数据库管理工具 > 正文

DMS在任务编排里能否做到 删除某个库的所有表?

"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 是能执行的。"

展开
收起
十一0204 2023-08-08 23:34:59 88 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    我已经认真阅读了 你的问题:

    【 DMS在任务编排里能否做到 删除某个库的所有表?

    并思考了 所有表?

    建议如下:


    以下是一个示例的存储过程,用于删除指定数据库中的所有表:

    sql
    Copy
    DELIMITER //

    CREATE PROCEDURE drop_all_tables()
    BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE tableName VARCHAR(255);
    DECLARE cur CURSOR FOR
    SELECT table_name
    FROM information_schema.tables
    WHERE table_schema = 'your_database_name'; -- 替换为你要删除表的数据库名称

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    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 dropStmt FROM @dropStmt;
    EXECUTE dropStmt;
    DEALLOCATE PREPARE dropStmt;
    

    END LOOP;

    CLOSE cur;
    END //

    DELIMITER ;
    在上述示例中,使用了information_schema表来获取指定数据库中的所有表名,并使用循环和动态SQL语句来逐个删除表。

    你可以将上述存储过程添加到DMS任务编排中,并在需要删除某个数据库中的所有表时调用该存储过程。请确保在执行删除操作之前,先进行必要的数据备份,并谨慎操作。

    2023-08-18 20:15:29
    赞同 展开评论 打赏
  • 意中人就是我呀!

    "是要前面加一个 delimiter //,end;改成end;// 然后再加一行 delimiter ; 类似这样的。
    0a4d8cca3a9313d626718c796b92a79d.png
    此回答整理至钉群“阿里云DMS数据管理用户交流群”。"

    2023-08-09 11:09:57
    赞同 展开评论 打赏

阿里云提供了一系列数据库管理工具,可以满足您在云上进行数据库管理的各种需求。包含数据传输服务DTS、数据库备份 DBS、数据库自治服务 DAS、数据管理 DMS。

相关产品

  • 数据管理
  • 热门讨论

    热门文章

    相关电子书

    更多
    金融行业高频交易数据管理解决方案 立即下载
    基于Spark的统一数据管理与数据探索平台 立即下载
    INFINIDATA:基于Spark的统一数据管理与探索平台 立即下载