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
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.
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
No hay que dejar pasar que
Comentarios