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:
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'> </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'> </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" )
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?
ResponderEliminarSaludos
Hola. Prueba lo siguiente:
ResponderEliminar1. 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.
muchas gracias!
ResponderEliminarMuchas gracias por el script! ;)
ResponderEliminarMe ayudó mucho
Saludos
Hola,
ResponderEliminarParece que el soporte para plugins en LUA se suspendió.
Así, escribí un plugin en Python.
Está disponible en: https://github.com/rsn86/MWB-DBDocPy
Hola Rodrigo muchas gracias por tu aporte pero no logro correr el script =(
EliminarHola, alguien sabe si hay otro script con python, ya que el .lua está suspendido. Gracias
ResponderEliminarHola, la versión actualizada se encuentra aquí http://tmsanchezdev.blogspot.mx/2015/03/html-report-from-mysqlworkbench-6x.html
EliminarSaludos
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
ResponderEliminarhttp://apuntes-para-no-olvidar.blogspot.com/2011/06/obtener-los-campos-de-una-tabla-en.html