6

Должен быть в состоянии выполнить передовую технику из модели, расположенной в файле .mwb. Все это из командной строки, поскольку я хотел бы автоматизировать процесс.Формирование командной строки с использованием файла .mwb?

Может кто-нибудь, пожалуйста, сообщите мне, если это возможно, и если да, то как?

+0

Рассмотрим редактирование пост включать образец ввода, выборки ожидается выход, текущий код, токовый выход. Удачи. – shellter

+0

Hello Shellter. Вход представляет собой файл '.mwb'; выход - это DDL-файл '.sql'. Текущий код: нет, поскольку я ищу маршруты. – balteo

+0

Привет @balteo, вы когда-нибудь могли это сделать? В настоящее время я сталкиваюсь с той же проблемой. – Aistina

ответ

5

Это выход в командной строке после вызова ОЗ --help:

mysql-workbench [<options>] [<model file>] 
Options: 
    --force-sw-render  Force Xlib rendering 
    --force-opengl-render Force OpenGL rendering 
    --query <connection> Open a query tab to the named connection 
    --admin <instance>  Open a administration tab to the named instance 
    --model <model file> Open the given EER model file 
    --script <script file> Execute the given Python or Lua script file 
    --run <script>   Execute the given code in default language for GRT shell 
    --run-python <script> Execute the given code in Python 
    --run-lua <script>  Execute the given code in Lua 
    --quit-when-done  Quit Workbench when the script is done 
    --help, -h    Show command line options and exit 
    --log-level=<level> Valid levels are: error, warning, info, debug1, debug2, debug3 
    --verbose    Enable diagnostics output 
    --version    Show Workbench version number and exit 

Я думаю, вы можете загрузить свою модель, используя опцию --model, а затем создать скрипт, который будет выполнять прямой инжиниринг и запуск он использует опцию --run, а затем инструктирует WB выйти, как только он закончит с опцией --quit-when-done.

Вы можете проконсультироваться с помощью WB, чтобы узнать больше о создании скриптов, а также this guide.

+0

Большое спасибо Серхио. Я посмотрю на предоставленные образцы и начну писать свой сценарий. – balteo

3

Вы можете фактически автоматизировать эту задачу с помощью скрипта Python (или Lua) - MySQL Workbench уже имеет интерпретатор под меню Scripting. Создайте новый скрипт и использовать заглушки:

# -*- 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, {}) 

Это не actully запустить из командной строки, но я считаю, вы можете запустить его с --run-script опции.

+0

Он отлично работает из командной строки (мне просто нужен фиктивный X-сервер для запуска WB) ... * но * У меня возникла проблема с моими взглядами. Некоторые из моих представлений используют другие представления, а при создании сценариев создаются заметки в зависимостях учетных записей. Другими словами, если я получаю два вида vA и vB, а vB определяется чем-то вроде 'select somefield FROM vA', я могу закончить sql-скрипт, пытающийся сгенерировать представление B перед представлением A ... которое конечно, приводит к ошибке: 'Таблица 'vA' не существует' Любая идея исправить это? – Balmipour

+0

@Balmipour, извините, я сейчас не в курсе этого вопроса, не могу вспомнить подробности. Как правило, если у вас есть новый вопрос, лучше спросить его отдельно. Надлежащая маркировка может помочь другим привлечь внимание и решить эту проблему. – madhead

2

Этот вопрос слишком стар, но я нашел проект на github, который делает это, под командами в cmd-окнах, и here репозиторий github и больше версии файла linux sh.

Окна

@echo off 
REM generate sql from mwb 
REM usage: mwb2sql.bat {.mwb file} {output file} 

SET WORKBENCH="C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE\MySQLWorkbench.exe" 
SET OUTPUT=%~f2 
%WORKBENCH%^
    -open %~f1^
    -run-python "import os;import grt;from grt.modules import DbMySQLFE as fe;c = grt.root.wb.doc.physicalModels[0].catalog;fe.generateSQLCreateStatements(c, c.version, {});fe.createScriptForCatalogObjects(os.getenv('OUTPUT'), c, {})"^
    -quit-when-done