使用命令行

时间:2016-04-27 17:52:42

标签: mysql command-line mysql-workbench forward-engineer

  

我们最近安装了一个专门用于部署测试的服务器   提交完成后,通过Jenkins自动更新,然后发送   发现回归时发送邮件   
> 这要求我们的数据库始终是最新的

     

由于数据库模式引用是我们的MWB,我们添加了一些脚本   在部署期间,将.mwb导出到.sql(使用python)这个   工作得很好......但仍有一些问题

我们主要担心的是附加到架构的功能根本不会导出,这会导致数据库无法使用。

我们想破解python代码以使其导出脚本...但是没有找到关于它的足够信息。 这是我们找到的documentation中唯一的一部分。这对我们来说不太清楚。我们没有找到有关导出脚本的任何信息。 我们发现只有db_Script类存在。我们不知道 where 我们可以在执行上下文中找到它的实例,也不知道它们可以轻松导出。我们错过了什么吗?

作为参考,这是我们目前用于mwb到sql转换的脚本(mwb2sql.sh)。
它从命令行调用MySqlWorkbench(我们使用虚拟x-server来刷新图形输出。)
我们需要完成的是在我们的工作台命令行调用中传递的python部分。

# generate sql from mwb
# usage: sh mwb2sql.sh {mwb file} {output file}
# prepare: set env MYSQL_WORKBENCH

if [ "$MYSQL_WORKBENCH" = "" ]; then
  export MYSQL_WORKBENCH="/usr/bin/mysql-workbench"
fi

export INPUT=$(cd $(dirname $1);pwd)/$(basename $1)
export OUTPUT=$(cd $(dirname $2);pwd)/$(basename $2)

"$MYSQL_WORKBENCH" \
  --open $INPUT \
  --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
set -e

0 个答案:

没有答案