Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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
-
¿todas las tablas de la base de datos tienen el mismo prefijo?
-
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.
-
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.
-
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