modificar Cómo eliminar un nombre de prefijo de cada nombre de tabla en una base de datos mysql




modificar una base de datos en mysql (3)

Puede generar las declaraciones necesarias con una sola consulta:

select 'RENAME TABLE ' || table_name ||  ' TO ' || substr(table_name, 5) ||';'
from information_schema.tables

Guarde el resultado de esa consulta en un archivo y tendrá todas las declaraciones que necesita.

O si eso devuelve 0 sy 1 s en lugar de los stateMenets, aquí está la versión que usa concat :

select concat('RENAME TABLE ', concat(table_name, concat(' TO ', concat(substr(table_name, 5), ';'))))
from information_schema.tables;

https://code.i-harness.com

Tengo una base de datos joomla mysql con un prefijo de nombre de tabla de "jos_" en todos los nombres de mi tabla. Pero me gustaría eliminarlo de todas mis tablas. Entiendo cómo cambiar el nombre de cada tabla, una a la vez, pero tengo 600 tablas. ¿Hay una consulta sql fácil de ejecutar para hacer esto?

Si alguien tiene una solución, ¿podría publicar la consulta SQL exacta que puedo usar?


Puede crear su propio procedimiento almacenado para cambiar el nombre de sus tablas, con eso no necesita abrir un editor externo, todo se hará en el servidor:

delimiter //
CREATE PROCEDURE rename_tables( IN db CHAR(255), IN srch CHAR(255), IN rplc CHAR(255) )
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE from_table CHAR(255);
  DECLARE cur1 CURSOR FOR SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=db;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  OPEN cur1;

  read_loop: LOOP
    IF done THEN
      LEAVE read_loop;
    END IF;

    FETCH cur1 INTO from_table;
    SET @to_table = REPLACE(from_table, srch, rplc);

    IF from_table != @to_table THEN
      SET @rename_query = CONCAT('RENAME TABLE ', db, '.', from_table, ' TO ', @to_table, ';');

      PREPARE stmt FROM @rename_query;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
    END IF;

  END LOOP;

  CLOSE cur1;
END//
delimiter ;

Uso:

CALL rename_tables('test', 'jos_', '');

Actualización: Este fue mi primer procedimiento almacenado de MySQL y me encontré con el bug # 5967 de 6 años , que era bastante molesto, tus nombres de variables deben ser diferentes de los nombres de los campos, porque si no lo son obtendrás valores NULL en tu variables.

Así que ten en cuenta eso si decides escribir un procedimiento almacenado de MySQL.


  1. En phpmyadmin, seleccione todas las tablas de su base de datos.
  2. Desde el menú desplegable 'Con seleccionado:' elegir 'Reemplazar prefijo de tabla'
  3. Establecer desde-> a reemplazo.
  4. HECHO




phpmyadmin