2010-07-13 18 views
5

Actualmente estoy usando FinalBuilder para crear un edificio de un clic n 'generate install, pero me enfrenté a la falta de capacidad de MySQL Workbench para generar secuencias de comandos SQL desde una línea de comandos.Cómo generar secuencias de comandos SQL desde MySQL Workbench utilizando la línea de comandos?

+0

¿Podría aclarar por qué es un problema y qué está tratando de hacer? – Cez

+0

Sin la capacidad de línea de comando de Workbench, ¿cómo puedo automatizar la operación de construcción? –

+0

¿Para qué está utilizando Workbench? Por lo que yo sé, no tiene una interfaz de línea de comando. – Cez

Respuesta

0

MySQL Workbench tiene una API completa de Python Scripting.

Si necesita funciones adicionales, por favor, háganoslo saber: http://forums.mysql.com/index.php?151

  • Workbench MySQL
+1

Tnx para el enlace. Seguramente comprobaré esta API. Definitivamente sería una buena característica tener también una aplicación CLI, que podría generar SQL a partir de archivos mwb. Así que los esquemas de BD podrían diseñarse usando la GUI de MySQL Workbench, y luego un procedimiento de implementación automatizada de un solo clic (es decir, durante el desarrollo) podría hacer todo en el esquema de db. Manteniendo todo DRY obediente. Pero estoy seguro de que todo esto se puede hacer a través de la API de Python mencionada anteriormente. – maraspin

+0

El enlace no conduce a la API ... –

4

En realidad se puede automatizar esta tarea con Python (o LUA) guión - MySQL Workbench ya tiene una intérprete bajo el menú Scripting. Crear un nuevo guión y utilizar el talón:

# -*- coding: utf-8 -*- 

import os 
import grt 
from grt.modules import DbMySQLFE 

c = grt.root.wb.doc.physicalModels[0].catalog 
DbMySQLFE.generateSQLCreateStatements(c, c.version, { 
    'GenerateDrops' : 1, 
    'GenerateSchemaDrops' : 1, 
    'OmitSchemata' : 1, 
    'GenerateUse' : 1 
}) 
DbMySQLFE.generateSQLCreateStatements(c, c.version, { 
DbMySQLFE.createScriptForCatalogObjects(os.path.dirname(grt.root.wb.docPath) + 'ddl.sql', c, {}) 

No actully ejecuta desde la línea de comandos, pero que creo que se puede ejecutar con --run-script opción.

+2

¡Gracias! Esto básicamente funciona (y he incorporado su respuesta a [la respuesta de mi pregunta] también (http://stackoverflow.com/a/26914679/419404), aunque hay algunos errores menores en su script: debería leer 'DbMySQLFE .generateSQLCreateStatements (c, c.version, {}) 'y' + '/ ddl.sql''. – Archimedix

Cuestiones relacionadas