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" )