mysql如何批量刪除數(shù)據(jù)庫(kù)

小億
90
2024-09-03 09:10:31
欄目: 云計(jì)算

在MySQL中,要批量刪除數(shù)據(jù)庫(kù),可以使用循環(huán)和動(dòng)態(tài)SQL語(yǔ)句。這里是一個(gè)示例,展示了如何使用存儲(chǔ)過(guò)程來(lái)批量刪除以特定前綴開頭的數(shù)據(jù)庫(kù):

  1. 首先,創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,用于批量刪除數(shù)據(jù)庫(kù):
DELIMITER $$
CREATE PROCEDURE DropDatabasesWithPrefix(IN dbPrefix VARCHAR(255))
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE dbName VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME LIKE CONCAT(dbPrefix, '%');
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    OPEN cur;

    read_loop: LOOP
        FETCH cur INTO dbName;
        IF done THEN
            LEAVE read_loop;
        END IF;

        SET @sql = CONCAT('DROP DATABASE ', dbName);
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP;

    CLOSE cur;
END$$
DELIMITER ;

這個(gè)存儲(chǔ)過(guò)程接受一個(gè)參數(shù)dbPrefix,表示要?jiǎng)h除的數(shù)據(jù)庫(kù)名稱的前綴。

  1. 調(diào)用存儲(chǔ)過(guò)程,傳入要?jiǎng)h除的數(shù)據(jù)庫(kù)名稱前綴:
CALL DropDatabasesWithPrefix('myprefix_');

這將刪除所有以myprefix_開頭的數(shù)據(jù)庫(kù)。請(qǐng)注意,在執(zhí)行此操作之前確保備份好相關(guān)數(shù)據(jù),因?yàn)閯h除操作是不可逆的。

0