Mysql 使用模式重命名多个表

use*_*338 1 mysql rename multiple-tables

我知道如何奔跑

RENAME TABLE onetable_test TO onetable;
Run Code Online (Sandbox Code Playgroud)

但是有没有一种方法可以用某种模式重命名许多表,并且不需要编写大量代码,例如

RENAME TABLE onetable_test TO onetable;
RENAME TABLE twotable_test TO twitable;
RENAME TABLE threetable_test TO threetable;    
...
Run Code Online (Sandbox Code Playgroud)

我正在使用mysql。

谢谢!

hem*_*emu 5

使用下面的存储过程::

DELIMITER $$
Run Code Online (Sandbox Code Playgroud)

创造

PROCEDURE `Rename_Tables`()

BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tableName VARCHAR(50);
DECLARE newTableName VARCHAR(70);
DECLARE t_query VARCHAR(500);
DECLARE cur1 CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_name LIKE '%table_test' AND table_schema='test' ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur1;

read_loop: LOOP
    FETCH cur1 INTO tableName;
    IF done THEN
        LEAVE read_loop;
    END IF;
    SET newTableName = SUBSTRING(tableName, 1,LOCATE('_',tableName)-1);
    SET t_query = CONCAT('RENAME TABLE ', tableName, ' TO ', newTableName);

    SET @myQuery = t_query;
    PREPARE stmt FROM @myQuery;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END LOOP;

END$$
Run Code Online (Sandbox Code Playgroud)

分隔符;

将 table_schema 替换为您的 table_schema 名称。