2010-09-21 48 views
1

example_或E_怎么滴根据前缀字符串

我想丢弃符合前缀E_所有数据库多个数据库,使e_database1,e_database2等等都将被丢弃。

命令不工作:

的MySQL数据库下降E_% 的mysql删除数据库E_ *

我不希望在一个给定的数据库中的所有表,但所有的数据库在给定的MySQL服务器。

+0

这应有助于:http://stackoverflow.com/questions/5457286/drop-multiple-databases/8173331#8173331 – dkubb 2011-11-17 19:53:08

回答

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