【发布时间】:2010-09-21 16:05:52
【问题描述】:
example_ 或 e_
我想删除所有匹配前缀 e_ 的数据库,以便删除 e_database1、e_database2 等。
不起作用的命令:
mysql 删除数据库 e_% mysql 删除数据库 e_*
我不是查找给定数据库中的所有表,而是查找给定 MySQL 服务器中的所有数据库。
【问题讨论】:
标签: mysql-management
example_ 或 e_
我想删除所有匹配前缀 e_ 的数据库,以便删除 e_database1、e_database2 等。
不起作用的命令:
mysql 删除数据库 e_% mysql 删除数据库 e_*
我不是查找给定数据库中的所有表,而是查找给定 MySQL 服务器中的所有数据库。
【问题讨论】:
标签: mysql-management
你可以用这样的存储过程来做到这一点:
/* Start stored proc */
DELIMITER //
DROP PROCEDURE IF EXISTS db_clean_up //
CREATE PROCEDURE db_clean_up
(
)
BEGIN
declare done bit default false;
declare deleted varchar(255);
-- Drop DBs
DECLARE cur1 CURSOR FOR SELECT
SCHEMA_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME LIKE 'db_prefix%';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
createLoop: LOOP
FETCH cur1 INTO deleted;
IF done THEN
LEAVE createLoop;
END IF;
SET @query = CONCAT('DROP DATABASE `', deleted, '`;');
PREPARE stmt1 FROM @query;
EXECUTE stmt1;
END LOOP createLoop;
CLOSE cur1;
END //
delimiter ;
/* End stored proc */
【讨论】: