Hace tiempo publiqué la forma de generar la documentación en HTML de una base de datos con la herramienta MySQLWorkBench. La versión inicial solo obtenía la información de las tablas.
Gracias al trabajo de Abraham Marcelino RamírezVega, ahora es posible obtener la documentación de las vistas y de los procedimientos almacenados.
Aquí les dejo la versión modificada con los cambios de Abraham:
local schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/1/tables")
local i
local j
print("Tablas\n" )
for i=1, grtV.getn(schemata) do
print("<HR><table border='1' style='width:100%'> \n" )
print("<tr><td colspan='5'> Nombre de la tabla: " .. schemata[i].name .. "</td></tr> \n")
print("<tr><td colspan='5'> Descripcion: " .. schemata[i].comment .. "</td> </tr>\n")
print("<tr> \n" )
print("<td>NOMBRE DE COLUMNA</td> \n")
print("<td>TIPO</td> \n")
print("<td>NULO</td> \n")
print("<td>AUTO INCRMENTAL</td> \n")
print("<td>COMENTARIOS</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</tr>\n" )
end
print("</table>\n" )
end
print("<HR><Vistas\n" )
schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/1/views")
for i=1, grtV.getn(schemata) do
print("<HR><table border='1' style='width:100%'> \n" )
print("<tr><td colspan='5'> Nombre de la vista: " .. schemata[i].name .. "</td></tr> \n")
print("<tr><td colspan='5'> Descripcion: " .. schemata[i].comment .. "</td> </tr>\n")
print("<tr><td colspan='5'> Definicion de la vista:</td></tr><tr><td>" .. schemata[i].sqlDefinition .. "</td> </tr>\n")
print("</table>\n" )
end
print("Procedimientos Almacenados\n" )
schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/1/routines")
for i=1, grtV.getn(schemata) do
print("<HR><table border='1' style='width:100%'> \n" )
print("<tr><td colspan='5'> Nombre del procedimiento almacenado: " .. schemata[i].name .. "</td></tr> \n")
print("<tr><td colspan='5'> Typo del procedimiento almacenado: " .. schemata[i].routineType .. "</td></tr> \n")
print("<tr><td colspan='5'> Descripcion: " .. schemata[i].comment .. "</td> </tr>\n")
print("<tr><td colspan='5'> Parametros: </td> </tr>\n")
print ( "<tr>\n<td>Nombre del parametro</td>\n" )
print ( "<td>Tipo de dato del parametro</td>\n</tr>" )
for j=1, grtV.getn(schemata[i].params) do
print ( "<tr><td>" .. schemata[i].params[j].name .. "</td>" )
print ( "<td>" .. schemata[i].params[j].datatype .. "</td></tr>\n" )
end
print("<tr><td colspan='5'> Definicion del procedimiento almacenado:</td></tr>\n")
print("<tr><td colspan='5'>" .. schemata[i].sqlDefinition .. "</td></tr>\n")
print("</table>\n" )
end