viernes, 30 de julio de 2010

Reporte en HTML de un modelo en MySQLWorkBench 5.2.25

Por lo regular utilizo MySQL Workbench Standard Edition para diseñar el esquema de mis bases de datos, sin lugar a dudas esta es una gran herramienta, pero ésta versión no tiene un reporteador para generar en HTML la documentación de los campos utilizados.

Me dí a la tarea de buscar como utilizar el lenguaje de scripts y genere el siguiente código que genera una tabla en HTML con los nombres de las tablas y las columnas, con sus descripciones.

Solo tienes que cambiar la siguiente línea para obtener la documentación de tu modelo

local schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/1/tables")

Para saber la ruta correcta puedes dar clic en Scripting, Scripting Shel y la ventana Working Scripting Shell pulsar en la pestaña Global para seleccionar tu propio esquema.

Para generar el documento en HTML guarda el código de abajo en un documento de texto con la extensión .lua y lo ejecutas desde Scripting, Run Workbench Script File

Espero les sea de utilidad.

Nota importante: Hay una versión más reciente de éste script aquí


local schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/1/tables")
local i
local j
print("<table border='1' style='width:100%'> \n" )
for i=1, grtV.getn(schemata) do
print("<tr> \n" )
print("<td colspan='5'> TABLE NAME: " .. schemata[i].name .. "</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" )

for j=1, grtV.getn(schemata[i].columns) do
print("<tr> \n" )
print ( " <td>" .. schemata[i].columns[j].name .. "</td> \n" )
print ( " <td>" .. schemata[i].columns[j].formattedType .. "</td> \n" )

if (schemata[i].columns[j].isNotNull == 1) then
print (" <td>" .. "NOT NULL" .. "</td> \n" )
else
print ( " <td>" .. "NULL" .. "</td> \n" )
end

if (schemata[i].columns[j].autoIncrement == 1) then
print (" <td>" .. "AUTO_INCREMENT" .. "</td> \n" )
else
print (" <td>" .. " - " .. "</td> \n" )
end

print ( " <td>" .. schemata[i].columns[j].comment .. "</td> \n" )
print("</tr> \n" ) end

end
print("</table> \n" )
print ( "\n" )