7

我需要能够从位于 .mwb 文件中的模型执行正向工程。所有这些都来自命令行,因为我想自动化这个过程。

谁能告诉我这是否可行,如果可以,怎么办?

4

3 回答 3

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选项运行它,然后在完成该--quit-when-done选项后指示 WB 退出。

您可以查阅 WB 帮助以了解有关创建脚本以及本指南的更多信息。

于 2012-03-05T13:45:34.807 回答
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, {})

它实际上并没有从命令行运行,但我相信你可以使用--run-script选项运行它。

于 2013-12-05T17:36:02.483 回答
3

这个问题太老了,但我在 github 上找到了一个项目,它在 cmd windows 中的命令下方,这里是 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
于 2015-06-14T02:23:52.357 回答