viernes, 15 de noviembre de 2013

Reporte actualizado del modelo de la base de datos en MYSQL Workbench

Ha pasado algo de tiempo desde el último post.

Era el mes de Julio de 2010 cuando compartí con ustedes como generar un  Reporte en HTML de un modelo en MySQLWorkBench 5.2.25  utilizando un script LUA en MySQLWorkbench.

A partir de esa publicación, varias personas han contribuido forma valiosa para mejorar el script.

En esta ocasión agradezco a Paco Mora las mejoras que le ha hecho y pongo a la disposición de  ustedes el código que él me ha enviado.

De nueva cuenta reitero mi agradecimiento a todos los que han contribuido para mejorar éste script.

No se diga más, he aquí el código:


--[[Guardamos el esquema de la base de datos en la variable schema]] local schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/tables") local i--Varible para iterar el esquema. local j--Variable para iterar las tablas base de datos local k--Variable para iterar los campos de las tablas. print("<!DOCTYPE html>\n" ) print("<html>\n" ) print("<head>\n" ) print("<style>\n" ) print(" #customers\n" ) print(" {\n" ) print(" font-family:'Trebuchet MS', Arial, Helvetica, sans-serif;\n" ) print(" width:100%;\n" ) print(" border-collapse:collapse;\n" ) print(" }\n" ) print(" #customers td, #customers th \n" ) print(" {\n" ) print(" font-size:1em;\n" ) print(" border:1px solid #98bf21;\n" ) print(" padding:3px 7px 2px 7px;\n" ) print(" }\n" ) print(" #customers th \n" ) print(" {\n" ) print(" font-size:1.1em;\n" ) print(" text-align:left;\n" ) print(" padding-top:5px;\n" ) print(" padding-bottom:4px;\n" ) print(" background-color:#A7C942;\n" ) print(" color:#ffffff;\n" ) print(" }\n" ) print(" #customers tr.alt td \n" ) print(" {\n" ) print(" color:#000000;\n" ) print(" background-color:#EAF2D3;\n" ) print(" }\n" ) print(" </style>\n" ) print("\n" ) print("</head>" ) print("<body>" ) print("<table border='1' style='width:100%'> \n" ) for i=1, grtV.getn(schemata) do print("<tr id='customers'> \n" ) print("<td colspan='5'> NOMBRE DE LA BASE DE DATOS: " .. schemata[i].name .. "</td> \n") print("</tr> \n" ) print("<tr> \n" ) print("<td colspan='5'> </td> \n") print("</tr> \n" ) print("<tr> \n" ) print("<td colspan='5'>Tablas de la base de datos</td> \n") print("</tr> \n" ) for j=1, grtV.getn(schemata[i].tables) do print("<tr> \n" ) print("<td colspan='5'> <A href='#" .. schemata[i].tables[j].name .. "'>" .. schemata[i].tables[j].name .. "</A></td> \n") print("</tr> \n" ) end print("<tr> \n" ) print("<td colspan='5'>&nbsp;</td> \n") print("</tr> \n" ) print("<tr> \n" ) print("<td>COLUMN_NAME</td> \n") print("<td>TYPE</td> \n") print("<td>NULLABLE?</td> \n") print("<td>AUTO_INCREMENT?</td> \n") print("<td>COMMENTS</td> \n") print("</tr> \n" ) --Recorremos las tablas de la base de datos for j=1, grtV.getn(schemata[i].tables) do print("<tr> \n" ) print("<td colspan='5'>&nbsp;</td> \n") print("</tr> \n" ) print("<tr> \n" ) print ( " <td ><A name='" .. schemata[i].tables[j].name .. "'>" .. schemata[i].tables[j].name .. "</A></td> \n" )--Obtenemos el nombre de la tabla. print ( " <td colspan='4'>" .. schemata[i].tables[j].comment .. "/td> \n" )--Obtenemos el nombre de la tabla. print("</tr> \n" ) for k=1, grtV.getn(schemata[i].tables[j].columns) do print("<tr> \n" ) print ( " <td>" .. schemata[i].tables[j].columns[k].name .. "</td> \n" ) print ( " <td>" .. schemata[i].tables[j].columns[k].formattedType .. "</td> \n" ) if (schemata[i].tables[j].columns[k].isNotNull == 1) then print (" <td>" .. "NOT NULL" .. "</td> \n" ) else print ( " <td>" .. "NULL" .. "</td> \n" ) end if (schemata[i].tables[j].columns[k].autoIncrement == 1) then print (" <td>" .. "AUTO_INCREMENT" .. "</td> \n" ) else print (" <td>" .. " - " .. "</td> \n" ) end print ( " <td>" .. schemata[i].tables[j].columns[k].comment .. "</td> \n" ) print("</tr> \n" ) end end end print("</table> " ) print(" </body>" ) print("</html>" ) print ( "\n" )

9 comentarios:

  1. Hola y muchas gracias por compartir este script tan util, tengo una duda y espero me puedas ayudar, ya genere el archivo .lua y lo ejecute como mencionaste en el post anterior pero en que dirección y con que nombre se guarda el reporte .html?
    Saludos

    ResponderEliminar
  2. Hola. Prueba lo siguiente:

    1. Abre el diagrama MySQL Workbench
    2. Ve al menú Scripting y seleccionas "Run Workbench script file"
    3. Selecciona el script .lua
    4. Te debe mostrar una nueva pestaña llamada "Output"
    5. Copias el contenido de la salida a tu editor HTML favorito y lo guardas en alguna carpeta.

    Espero te sea de utilidad.

    Saludos.

    ResponderEliminar
  3. Muchas gracias por el script! ;)
    Me ayudó mucho

    Saludos

    ResponderEliminar
  4. Hola,

    Parece que el soporte para plugins en LUA se suspendió.
    Así, escribí un plugin en Python.
    Está disponible en: https://github.com/rsn86/MWB-DBDocPy

    ResponderEliminar
    Respuestas
    1. Hola Rodrigo muchas gracias por tu aporte pero no logro correr el script =(

      Eliminar
  5. Hola, alguien sabe si hay otro script con python, ya que el .lua está suspendido. Gracias

    ResponderEliminar
    Respuestas
    1. Hola, la versión actualizada se encuentra aquí http://tmsanchezdev.blogspot.mx/2015/03/html-report-from-mysqlworkbench-6x.html

      Saludos

      Eliminar
  6. Muy Interesante y de gran ayuda, pero la mayoria de las veces se necesita el diccionario para llevarlo a word o excel, por lo que podrian simplemente hacer una plantilla en excel y copiar el resultado de las siguientes consultas

    http://apuntes-para-no-olvidar.blogspot.com/2011/06/obtener-los-campos-de-una-tabla-en.html

    ResponderEliminar