Documentar automáticamente las tablas de una base de datos MySQL

Seguro que a muchos os ha tocado la tediosa tarea de documentar una aplicación. Para la parte técnica, incluso debemos preparar imágenes de las tablas de la base de datos. Pues bien, no para que la máquina realice el 100% del trabajo, pero sí para ahorrarnos mucho pero que mucho curro, mi buen amigo Joaquín Gracia aka Kubiat se curró este script en PHP que me he encargado de modificar a mi gusto y de complementar con otro script en Bash.

Tenemos, por tanto, el siguiente material:

* Script en PHP que muestra en una página Web todas las tablas extraídas de la base de datos y que, además, ha sido modificado para obtener cada tabla en un fichero HTML independiente. Más o menos lo que muestra la siguiente imagen:

La visita a la página Web crea cada tabla de la base de datos en un fichero HTML, como puede verse en el listado por consola:

* Script en Bash que recoge cada fichero HTML del directorio de trabajo y lo convierte a imagen JPG, como muestra la siguiente imagen:

Para utilizar el script en PHP, basta con acceder a la dirección Web local donde lo hayamos colocado. Este script sólo necesita modificar las variables de acceso a la base de datos de la función conecta. En el caso de la imagen, la dirección Web a la que se accede es http://localhost/jscript/tablas.php

Para utilizar el script en Bash, le damos permisos de ejecución con chmod +x nscript y lo ejecutamos (importante que sea dentro de este directorio de trabajo) escribiendo ./nscript

El código de este script es tan sencillo como esto:

  1. #!/bin/bash
  2. #
  3. # Script para la obtencion de imagenes a partir de HTMLs
  4.  
  5. sudo chmod 777 *.html
  6. archivos=$(ls *.html)
  7.  
  8. for lista in $archivos
  9. do
  10.     convert -verbose -density 600x600 -trim +repage $lista $lista.jpg
  11.     rm $lista
  12. done

Lo que significa que el script tomará todos los archivos html de la carpeta, y uno a uno los convertirá a jpg con una densidad de página de 600×600, recortando los espacios en blanco sobrantes y paginando en varias imágenes si no cupiera en una. Después de esta conversión, se borra el fichero html que ya deja de sernos útil.

En el ejemplo hemos utilizado una instalación de Drupal para extraer todas las tablas de la base de datos y convertirlas a imágenes. La muestra de la lista de imágenes resultantes podemos verla en la siguiente imagen:

Obviamente podemos ver que el texto que acompaña a cada campo es demasiado genérico, de ahí a que no todo el trabajo lo realice la máquina. Nosotros podemos, en el paso de la generación de los archivos html, modificar cada campo de cada tabla en los ficheros html para que la descripción se ajuste a lo que queremos. Una vez terminadas las descripciones, lanzaríamos el script en bash y obtendríamos las imágenes automáticamente.

Recordar que este script borra cada fichero HTML, por lo que deberemos guardar en una carpeta los ficheros html por si luego queremos retocar alguna descripción, o eliminar la línea del script en bash que borra cada fichero html.

Descarga el script PHP aquí.
Descarga el script en Bash aquí.

Si la imagen resultante de alguno de los ficheros html nos resulta demasiado grande o demasiado dividida (por ejemplo, la tabla comments de Drupal se ha dividido en dos imágenes), podemos utilizar otro script para conversión manual de un único fichero html.

Este script contiene el siguiente código:

  1. #!/bin/bash
  2. #
  3. # Script para la obtencion de imagenes a partir de HTMLs
  4. # Uso: ./xscript 0.55 nombre-de-pagina-html-sin-extension
  5.  
  6. html2ps -U -s $1 -o $2.ps $2.html
  7. convert -density 600x600 -trim +repage $2.ps $2.jpg

La llamada a este script se realiza de la siguiente forma: ./xscript factor-escala nombre-de-pagina-html-sin-extension

Por ejemplo: ./xscript 0.55 comments

Descarga el script manual aquí.

A 2 personas les gusta esta entrada

4 pensamientos en “Documentar automáticamente las tablas de una base de datos MySQL

  1. Jajajajaja, si tuviera potestad para eliminar el estrés a base de scripts en Bash, no dude usted que lo haría, querido Kramthal 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *