6

Muszę być w stanie wykonać inżynierię do przodu z modelu znajdującego się w pliku .mwb. Wszystko to z linii poleceń, ponieważ chciałbym zautomatyzować proces.Wiersz poleceń do inżynierii z wykorzystaniem pliku .mwb?

Czy ktoś może dać mi znać, jeśli jest to możliwe, a jeśli tak, to w jaki sposób?

+0

Rozważmy edycji posta, aby to wejście próbki, próbki spodziewane wyjście, aktualny kod, prądu wyjściowego. Powodzenia. – shellter

+0

Witam Muszla. Dane wejściowe to plik '.mwb'; wynikiem jest plik DDL '.sql'. Obecny kod: brak, ponieważ szukam wskazówek. – balteo

+0

Cześć @balteo, czy byłeś kiedykolwiek w stanie to zadziałać? Obecnie mam ten sam problem. – Aistina

Odpowiedz

5

Jest to wyjście w linii poleceń po nazywamy WB z --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 

Chyba można załadować swój model używając opcji --model a następnie utworzyć skrypt, który wykona naprzód inżynierię i bieganie korzystając z opcji --run, a następnie instruuj WB, aby zakończył pracę po zakończeniu opcji .

Możesz skorzystać z pomocy WB, aby dowiedzieć się więcej o tworzeniu skryptów oraz o this guide.

+0

Wielkie dzięki Sergio. Popatrzę na dostarczone próbki i zacznę pisać scenariusz. – balteo

3

Możesz zautomatyzować to zadanie za pomocą skryptu Python (lub Lua) - MySQL Workbench ma już interpreter pod menu Scripting. Utwórz nowy skrypt i używać niedopałek:

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

Nie actully uruchamiane z linii poleceń, ale wierzę, można go uruchomić z --run-script opcji.

+0

Działa dobrze z linii poleceń (potrzebowałem tylko fałszywego X-serwera do uruchomienia WB) ... * ale * Mam problem z moimi widokami. Niektóre z moich widoków korzystają z innych widoków, a tworzenie kreacji skryptów uwzględnia zależności między kontami. Innymi słowy, jeśli otrzymam dwa widoki vA i vB, a vB jest zdefiniowany z czymś takim jak 'select somefield FROM vA', to może skończyć się skryptem sql próbującym wygenerować widok B przed widokiem A ... który oczywiście, powoduje błąd: "Tabela" vA "nie istnieje" Każdy pomysł, aby to naprawić? – Balmipour

+0

@Balmipour, przepraszam, nie jestem w tej chwili w pętli, nie pamiętam szczegółów. Ogólnie rzecz biorąc, jeśli masz nowe pytanie, lepiej zadać je osobno. Właściwe tagowanie może pomóc innym, aby zwrócić na to uwagę i rozwiązać problem. – madhead

2

To pytanie jest zbyt stare, ale znalazłem projekt na github, który to powoduje, poniżej poleceń w oknach cmd i here repozytorium github i więcej wersji pliku linux sh.

Okna

@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 
Powiązane problemy