1

example_ 或 e_

我想删除与前缀 e_ 匹配的所有数据库,以便删除 e_database1、e_database2 等。

不起作用的命令:

mysql 删除数据库 e_% mysql 删除数据库 e_*

我不是在寻找给定数据库中的所有表,而是寻找给定 MySQL 服务器中的所有数据库。

4

1 回答 1

0

你可以用这样的存储过程来做到这一点:

/* 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 */
于 2013-11-22T00:07:33.043 回答