MySQL - Renombrar Tabla

 
Vista:
sin imagen de perfil

Renombrar Tabla

Publicado por Judith (1 intervención) el 19/02/2017 16:31:39
Hola,

por una cuestión ooperativa debo renombrar una tabla todos los días con la fecha del día, por ahora lo estoy haciendo en un script y actualizo el nombre en forma manual anres de ejecutar el script.

Estoy intentando automatizar el proceso, por lo cual he intentado ejecutar las siguientes lineas en el script:

1
2
3
4
5
6
7
SET @Texto := CONCAT(LEFT(@Fecha, 4), LEFT(RIGHT(@Fecha, 5), 2), RIGHT(@Fecha, 2));
SET @Tabla := CONCAT('SERVIDOR.T', @Texto);
PREPARE RenombrarTablas
  FROM 'ALTER TABLE SERVIDOR.TABLA RENAME ?';
EXECUTE RenombrarTablas
  USING @Tabla;
DEALLOCATE PREPARE RenombrarTablas;

Me tira el error en la instrucción del PREPARE, me fijé en el manual, y aunque no da ejemplos de esto indica que tanto las instrucciones RENAME y ALTER TABLE son soportadas por la instrucción PREPARE, pero en ambos caso tira el siguiente error:

Error de SQL (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?'

Entiendo que es un problema de sintaxis y que obviamente no acepta variables.

Mi pregunta es, hay alguna manera de hacer esto desde mysql sin necesidad de usar PHP?

Cualquier comentario o ayuda será bienvenido.

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de SuperIndio
Val: 102
Bronce
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Renombrar Tabla

Publicado por SuperIndio (79 intervenciones) el 20/02/2017 18:02:02
Y porque no los haces con un script desde afuera? abajo uno para windows, el equivalente en Linux o Unix es mucho mas facil
cual es tu plataforma?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Echo Off
echo "creamos una variable conteniendo la fecha actual con el formato año-mes-dia"
REM   SET FOLDER=%date:~6,4%_%date:~3,2%_%date:~0,2%
SET FOLDER=%date:~6,4%%date:~3,2%%date:~0,2%
SET NEWTAB=TUsuario%FOLDER%
 
echo Use  dblaweb ;  > Script11.sql
 
echo RENAME TABLE TUsuario TO %NEWTAB% ; >> Script11.sql
 
echo commit ;  >> Script11.sql
 
echo show tables ;  >> Script11.sql
 
echo quit ;  >> Script11.sql
 
 
C:\Mariadb\bin\mysql -h localhost -u root -D dblaweb < Script11.sql
 
echo "Finalizado!!!!!!!!!!!!"


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
c:\Mariadb\dblaweb>C:\Mariadb\bin\mysql -h localhost -u root -D dblaweb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 35
Server version: 10.0.24-MariaDB mariadb.org binary distribution
 
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [dblaweb]> sow tables
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your Maria
ight syntax to use near 'sow tables' at line 1
MariaDB [dblaweb]> show tables;
+---------------------+
| Tables_in_dblaweb   |
+---------------------+
| treporte            |
| tusuario_2017_02_20 |
| vreporte            |
+---------------------+
3 rows in set (0.00 sec)
 
MariaDB [dblaweb]> ;



espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar