Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: foxternoster en 07 de Junio 2013, 08:41

Título: eliminar las tablas de una base de datos mysql con un mismo prefijo
Publicado por: foxternoster en 07 de Junio 2013, 08:41
saludos a todos estoy intentando borrar de golpe todas las tablas de una base de datos mysql que tienen un mismo prefijo pero no encuentro la forma de hacerlo
Título: Re:eliminar las tablas de una base de datos mysql con un mismo prefijo
Publicado por: Mastermind en 10 de Junio 2013, 00:20
¿todas las tablas de la base de datos tienen el mismo prefijo?
Título: Re:eliminar las tablas de una base de datos mysql con un mismo prefijo
Publicado por: foxternoster en 13 de Junio 2013, 11:06
No, la base de datos tiene tablas con varios prefijos, por ejemplo:

hum_users
hum_servers
hum_logics
...

poldat_users
poldat_servers
poldat_logics
...
etc.

Lo que quiero es eliminar las que tienen un prefijo concreto pero manteniendo las otras sin afectarlas.
Título: Re:eliminar las tablas de una base de datos mysql con un mismo prefijo
Publicado por: Mastermind en 15 de Julio 2013, 10:51
Mira para hacer esto puedes hacerlo de la siguiente manera en dos pasos:

Paso 1) Creamos una expresión DROP TABLE con todas las tablas que queremos eliminar.

Paso 2) Ejecutamos la expresión que hemos creado anteriormente

Para llevar a cabo el paso 1 la sintaxis sería la siguiente:

SELECT CONCAT("DROP TABLE ", GROUP_CONCAT(table_name), ";") FROM information_schema.tables
WHERE table_schema = "drupal6" AND table_name LIKE "mysite_%";

Esto lo que hace es recorrer todas las tablas de todas las bases de datos existentes y concatena todos los nombres de tabla de la base de datos drupal6 que comienzan con el prefijo "mysite_". Se genera una sentencia con DROP TABLE al principio y una lista de las tablas que comienzan con mysite_ separadas por comas. El resultado debe ser algo parecido a esto:

DROP TABLE mysite_access,mysite_actions,mysite_actions_aid,mysite_authmap,
mysite_vocabulary,mysite_vocabulary_node_types,mysite_watchdog;

En fin, puede que aparezcan 10, 30 ó 50 tablas, depende de cuántas tablas con ese prefijo haya.

Este resultado es la sentencia a ejecutar. Lo copiamos y vamos a la línea de comandos de MySql y lo ejecutamos. Con esto se ejecuta el borrado de todas las tablas con el mismo prefijo.



Título: Re:eliminar las tablas de una base de datos mysql con un mismo prefijo
Publicado por: foxternoster en 17 de Julio 2013, 10:20
Gracias, ha ido bien aunque me extraña que no haya una forma más directa de hacerlo pero lo importante es que funciona bien asi agradecido