6

我需要能夠從位於.mwb文件中的模型執行正向工程。所有這些都來自命令行,因爲我希望自動化該過程。使用.mwb文件的命令行前向工程?

任何人都可以讓我知道如果這是可能的,如果是的話如何?

+0

考慮編輯您的文章,包括樣本輸入,採樣預期的輸出,電流代碼,電流輸出。祝你好運。 – shellter 2012-03-04 22:52:51

+0

Hello Shellter。輸入是一個'.mwb'文件;輸出是'.sql' DDL文件。目前的代碼:沒有,因爲我正在尋找方向。 – balteo 2012-03-05 07:56:27

+0

嗨@balteo,你是否能夠得到這個工作?我目前面臨同樣的問題。 – Aistina 2012-10-18 08:37:40

回答

5

這是在命令行中,一旦你打電話WB與--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 2012-03-05 14:47:26

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運行命令行,但我beleive你可以--run-script選項運行它。

+0

它從命令行工作正常(我只需要一個虛擬的X服務器來運行WB)...... *但*我的意見有問題。 我的一些視圖使用其他視圖,並且腳本創建順序確實需要考慮依賴關係。 換句話說,如果我得到了兩個視圖vA和vB,並且vB被定義爲'select somefield FROM vA',我可能會以一個sql腳本結束,試圖在視圖A之前生成視圖B ...當然,導致一個錯誤:'表'vA'不存在' 任何想法解決這個問題? – Balmipour 2016-04-27 12:02:57

+0

@Balmipour,對不起,我現在不在這個問題的循環中,無法回憶細節。一般來說,如果您有新的問題,最好單獨提問。適當的標籤可以幫助他人注意並解決問題。 – madhead 2016-04-27 12:31:18

2

這個問題太舊了,但是我在github上發現了一個項目,它在cmd窗口下面的命令下,以及github版本庫和更多的linux sh文件版本。

的Windows

@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