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" )
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" )
Saludos: Me quito el sombrero, que soluciíon tan efectiva, estaba buscando precisamente la forma; de extraer la informacion de documentacion de la base de datos con WorkBench y no encontraba como.
ResponderEliminarM U C H A S G R A C I A S
la linea que dices que cambie por local schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/1/tables")
ResponderEliminareso en donde lo cambio????????????
Hola, tengo un problema al ejecutar el script la salida exacta es esta:
ResponderEliminar#######
Executing script /home/pepe/Escritorio/dict.lua...
TABLE NAME: api
COLUMN_NAME
TYPE
NULLABLE?
AUTO_INCREMENT?
COMMENTS
error executing script: /home/pepe/Escritorio/dict.lua:21: Invalid object member 'columns'
Executing script /home/**/Escritorio/dict.lua...
TABLE NAME: api
COLUMN_NAME
TYPE
NULLABLE?
AUTO_INCREMENT?
COMMENTS
error executing script: /home/**/Escritorio/dict.lua:21: Invalid object member 'columns'
########
he cambiado la linea para mi esquema
local schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/tables")
y desde Workbench Scripting Shell veo que columns está definida como:
colums = [{db.mysql.Column}(fa6....)]
Mi version de mysql Workbench es la 5.2.31
¿Que hay mal?
Hola me gusto el script, de hecho lo estoy ocupando para documentar unas bases de datos, hize algunas modificaciones para que incluya la descripcion de las tablas, espero poder agregar las vistas despues.
ResponderEliminarYo no tube que modificar nada, eso si el documento que vas a sacar tiene que ser el primero
si quieren el codigo mandenme un correo a marcelino01@gmail.com, ya que el sitio no me daja publicarlo ><
saludos.
Que tal Abraham, me da gusto saber que te es util el Script.
ResponderEliminarMuchas Gracias!
ResponderEliminarDejame decirte que este código es excelente... muchisimas gracias.. en serio.
ResponderEliminarY con tu permiso me gustaria hacerle unas pequeñas modificaciones para tener una forma de obtener un diccionario de datos....
Claro que si. La idea es compartir el conocimiento con todos.
ResponderEliminarPuedes revisar estas entradas: http://tmsanchezdev.blogspot.com/2010/08/agregando-estilos-al-script-para.html o lo aportes que hizo Abraham para mostrar información de los procedimientos. http://tmsanchezdev.blogspot.com/2011/07/nueva-version-para-generar-reporte-en.html
Saludos
Muchisimas gracias.... estan muy buenos todos.. en cuanto tenga listos mis aportes te los paso... y si tienes razon es muy bueno compartir el conocimiento.. y en especial una manera facil de obtener ese tipo de datos... gracias todoas ya ti. :)
ResponderEliminarEstimados a partir de este post generé un plugin para automatizar el proceso, una vez instalado la opción se encuentra presente en Plugins > Catalog > DBdoc: Write to File (para guardar en un archivo) y Plugins > Catalog > DBdoc: Copy to Clipboard (para copiar a portapapeles). http://dl.dropbox.com/u/38625994/db_doc_plugin.lua
ResponderEliminarMuchas gracias por compartir con la comunidad el plugin. En cuanto tenga tiempo voy a crear una entrada en el blog.
ResponderEliminarSaludos.
tmsanchez
Excelente viejo!!! gracias por el aporte.
ResponderEliminarMuchas gracias! Permitame escribir en inglés:
ResponderEliminarWhen I run the script WB immediately closes, with no error message. What am I possibly doing wrong? WB 5.2.17 Beta (from the Kubuntu repositories). You can reply in Spanish.
Thanks in advance,
Marcos
It keep showing: "object '/wb/doc/physicalModels/0/catalog' not found"
ResponderEliminarwhat should i do?
You said to change that line, but it's the same in mine. I'm using mac os. don't know if change's anything.
I got the same problem that Jose Luis.
ResponderEliminarInvalid object member 'columns'
How can i fix it?
Dear friends please see changes that tmsanchez published in this blog entry: http://tmsanchezdev.blogspot.com/2011/07/nueva-version-para-generar-reporte-en.html
ResponderEliminarAlso you can save those lines into a script file and then import it into MySQLWorkbench as a pluging.
Best regards.
Gracias a tmsanchez por compartir y gracias a abraham por enriquecer lo compartido. Pero una gran felicitacion a Carlos Acuña que a falta de orientacion fue la unica solucion que encontre.
ResponderEliminarUna pregunta donde se guarda el archivo html generado?
ResponderEliminarI am not being able to run this I get the following error:
ResponderEliminarError: Time: 11:29:19 Message: Error executing plugin wb.tools.runScriptFile: An error occurred while executing the script report.lua
Executing script
Error in file: report.lua:1: 'do' expected near 'doprint'
Executing script: report.lua...
ResponderEliminarerror executing script: report.lua:21: Invalid object member 'columns'
Muchas Gracias
ResponderEliminarexcelente script, aunque habia encontrado otro que funcionaba mejor, solo lo hacia con unas cuantas tablas, este funciona con todas! realmente podria decir que este funciona mejor solo por eso jajaja
ResponderEliminarIgual, ¿supongo que podria modificarlo mas a mi conveniencia si no es molestia?
--[[
ResponderEliminarGenial aportacion, le realize unos cambios para que funciones en mi equipo.
Editado por jpakoery 12-11-2013
utilizo Debian.
Mysql 5.5
]]
Este comentario ha sido eliminado por el autor.
EliminarNo me dejo subir el codigo, si gustan pueden mandar un correo a pmora9@gmail.com y con mucho gusro lo comparto.
EliminarSaludos a todos, yo ya tengo me db hecha en mysql, alguien me podria decir como hacer el diccionario de mi db con MySQL Workbench
ResponderEliminarLa última versión se encuentra aquí:
Eliminarhttp://tmsanchezdev.blogspot.mx/2015/03/html-report-from-mysqlworkbench-6x.html
Saludos