2010-09-21 47 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 */