我目前正在考虑自动化一个软件构建流程,该过程包括MySQL Workbench中定义的数据库架构。

使用Workbench的脚本功能,我想打开一个Workbench文档,并将其架构导出为SQL创建脚本。

我想知道的是,是否有一个函数将整个模式在Workbench的一步中导出 文件 | 出口 | 正向工程师SQL创建脚本, ,自动处理表之间的任何依赖项。

我在 DbMySQL 模块 可能 去做 (generateSQL(GrtNamedObject, dict, string)makeSQLExportScript(GrtNamedObject, dict, dict, dict)),但是我对他们期望的参数感到困惑 - 第一个可能是架构对象,但是其他参数是什么?

谁能告诉我我的假设是否正确和/或为我提供使用示例?

到目前为止,我想出了一个手动解决方案(请注意,目前尚未根据其FK关系对表进行排序):

local o = assert(io.open("/tmp/create.sql", "wb"));
foreach_table_all(function (t)
    o:write(DbMySQL:makeCreateScriptForObject(t) .. ";\n\n")
end)
o:close()

问题与 如何使用命令行从MySQL Workbench生成SQL脚本?, 但是,答案发现确实有抽象的,并且什么都没有说明实际使用MySQL Workbench的脚本功能。

有帮助吗?

解决方案

似乎是其他 链接的问题 得到 于2013年12月回答, ,礼貌 疯子, ,尽管有小琐碎的代码故障,而在python而不是lua中,所以在这里为我工作的python版本:

# -*- coding: utf-8 -*-
# MySQL Workbench Python script
# <description>
# Written in MySQL Workbench 6.0.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, {})

与循环变体相比,看起来很大 可能 带来一些好处(尚未进行测试,但我可以想象工作台能够找出适当的订单来创建桌子等)。

另外,我不确定当我问这个问题时是否存在这种情况,但是无论如何,这对最近的版本有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top