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 に答える