Eliminar todas las tablas de una base de datos mysql.

En ocasiones es necesario borrar todas las tablas de una base de datos y en el peor de los casos no tenemos permisos para hacerlo mediante del comando mysqladmin.

Y es que en el caso de que el servidor no sea nuestro y dependiendo del contrato es muy probable que no tengamos estos privilegios de seguridad.

Desde la terminal podemos ejecutar el siguiente comando:

mysql {nombre_base_datos} --batch -u {nombre_usuario} -p --disable-column-names --execute "SELECT CONCAT('drop table `',table_name,'` ; ') FROM information_schema.tables WHERE table_schema = '{nombre_base_datos}' " > comand_drop.sql;

Con ello obtenemos un listado de todos los ficheros que debemos volcar al fichero comando_drop.sql .

En esta consulta hacemos uso de los parámetros

  • --batch, que impide que salgan saltos de linea y adornos en el listado 
  • --disable-column-names que evita la cabeceras en cada columna


Si por si nuestras tablas fueran de tipo innodb hay que bloquear los chequeos a las claves foráneas que haría que no se pudieran borrar algunas tablas relacionadas.


Para ello al principio del fichero pondríamos el comando: 


SET FOREIGN_KEY_CHECKS = 0;

y al final del fichero 


SET FOREIGN_KEY_CHECKS = 1;

Con este fichero ya preparado solo nos quedaría hacer la masacre de tablas final. 


mysql  
{nombre_base_datos} -u  -p {nombre_usuario} < comando_drop.sql;

No hay que dejar pasar que  se refiere al nombre de usuario de la base de datos y   es el nombre de la base de datos cuyas tablas queremos eliminar.

Comentarios