MySQL: show table status mejorado
Desde la línea de comando ciertamente tenemos el control absoluto (siempre y cuando tengamos los privilegios) pero no siempre tenemos una visión general. En este caso cuando estamos logueados a una base de datos MySQL lo primero que solemos intentar averiguar es la lista de tablas y talvez la lista de funciones y procedimientos almacenados de una base de datos.
Este proceso suele ser doloroso por que en cuanto ejecutamos show table status; nos devuelve unas lineas que hasta da pereza interpretar. Lo que devuelve ese comando contiene varias columnas que vistas desde una herramienta visual como MySQL Workbench tienen mucho sentido, sin embargo desde la linea de comando no tanto. Pueden ver en la siguiente imagen como se ve un resultado en una ventana estándar de 80×25:
Para ver el detalle completo podemos agrandar la ventana y disminuir la fuente, pero suele tomar un poco de tiempo hacer eso, realmente es fastidioso.
Es por eso que hace mucho desarrollé un script para mostrar solo lo que necesito incluyendo a los procedimientos almacenados y funciones, recién esta semana que tengo varias horas de ocio y puedo compartirla con ustedes.
El resultado de mi script es mucho mas comprensible:
Éste es código fuente del procedimiento almacenado:
DELIMITER $$ CREATE PROCEDURE `tools`.`sp_status`(dbname VARCHAR(50)) BEGIN -- Obteniendo informacion de las tablas SELECT TABLE_NAME AS `Table Name`, ENGINE AS `Engine`, TABLE_ROWS AS `Rows`, CONCAT( (FORMAT((DATA_LENGTH + INDEX_LENGTH) / POWER(1024,2),2)) , ' Mb') AS `Size`, TABLE_COLLATION AS `Collation` FROM information_schema.TABLES WHERE TABLES.TABLE_SCHEMA = dbname; -- Obteniendo las funciones y procedimientos SELECT ROUTINE_NAME AS `Routine Name`, ROUTINE_TYPE AS `Type`, DATABASE_COLLATION AS `Collation` FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = dbname ORDER BY ROUTINES.ROUTINE_TYPE, ROUTINES.ROUTINE_NAME; END$$
Para invocarlo pueden escribir:
mysql> call tools.sp_status(database());
Notarán que he creado el procedimiento dentro de la base de datos tools, esto para que puedan llamarlo desde cualquier parte. Lamentablemente dentro de los procedimientos almacenados no es posible determinar la base de datos actual, es por eso que necesita de un parámetro con el nombre de la base de datos.
He publicado el procedimento en MySQL custom show table status
Espero que les sea de mucha utilidad (como a mi).
`
Entradas relacionadas :
El motor FEDERATED de MySQL, aunque no es muy versátil, puede resultar útil, por ejemplo, para conectarnos directamente a una tabla en otro servidor MySQL sin necesidad de un intermediario, como u ...
Nota previa: Esta no es una review minuciosa, es mas bien un tibio comentario sobre mi experiencia de usuario en las ultimas semanas con la herramienta MySQL Workbench 5.2.31 sobre Ubuntu 10.10. ...
He usado herramientas como MySQL Migration Toolkit (*) y Bullzip's Access To MySQL, ambos hacen un excelente trabajo pero no exporta las relaciones entre tablas. Hacer esta tarea nos puede tomar v ...
Los webmasters nos preocupamos mucho por saber quienes son los que visitan nuestras páginas, para ello utilizamos herramientas muy útiles como contadores de visitas, analizadores de tráfico, etc ...
Hace muchos años que desarrollo aplicaciones en Visual C++, casi todas las aplicaciones que desarrollé tienen que interactuar con bases de datos. Mi gestor de base de datos preferido es MySQL, ...
Blogesfera
Planetalinux
Quizá con show table status\G te resulta más cómodo que tener que definir procedures
Jordi,
show table status\G no es tan práctico cuando tienes decenas de tablas, ademas el procedure se define una sola vez, me parece mas incomodo estar revisando el resultado de tabulado de 80 tablas con \G.