segunda-feira, 24 de junho de 2013

Renomear para MAIÚSCULO todos os nomes de tabelas do MYSQL


Prezados leitores.
Algumas vezes me deparo com a situação de migração de bases que estão em windows para linux.
No nosso querido sistema linux, o MYSQL é case sensitive. Em algumas situações é só renomear todas as tabelas. porém quando são muitas tabelas, fica difícil.
Adaptei um exemplo de função do mysql para estas situações.
apenas troque o nome do seu banco de dados em banco_testes, execute o script e execute a função criada.
Abraços.

DELIMITER $$
USE `banco_testes`$$
DROP PROCEDURE IF EXISTS `test`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
    BEGIN
        DECLARE done INT DEFAULT FALSE;
        DECLARE _table_name TEXT;
        DECLARE _table_name_c TEXT;
        DECLARE curs1 CURSOR FOR  select table_name from   information_schema.`TABLES` where table_schema = 'banco_testes';

        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

        OPEN curs1;
            read_loop: LOOP
                FETCH curs1 INTO _table_name;





                IF done THEN
                      LEAVE read_loop;
                END IF;



                SET @tableName = _table_name;
                SET @s = CONCAT('RENAME TABLE ', _table_name, ' TO ', UPPER(_table_name));

                PREPARE stmt1 FROM @s;
                EXECUTE stmt1;
                DEALLOCATE PREPARE stmt1;


            END LOOP;
        CLOSE curs1;
    END$$


Atualização:
Para rodar esta procedure utilize o seguinte comando SQL:
CALL test();

Nenhum comentário:

Postar um comentário