【问题标题】:How to drop multiple databases based on a prefix string如何根据前缀字符串删除多个数据库
【发布时间】:2010-09-21 16:05:52
【问题描述】:

example_ 或 e_

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

不起作用的命令:

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

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

【问题讨论】:

标签: mysql-management


【解决方案1】:

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

/* 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 */

【讨论】:

    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多