代码之家  ›  专栏  ›  技术社区  ›  Arc

构建自动化和MySQL工作台脚本:Forward Engineer SQL CREATE SCRIPT

  •  9
  • Arc  · 技术社区  · 15 年前

    我目前正在研究一个软件构建过程的自动化,这个过程包括在MySQL工作台中定义的数据库模式。

    使用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()
    

    这个问题与 How to generate SQL Script from MySQL Workbench using Command Line? 但是,答案是非常抽象的,并没有说明如何实际使用MySQL工作台的脚本功能。

    1 回复  |  直到 9 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    好像是另一个 linked question 得到了 answered in Dec 2013 ,承蒙 madhead

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

    与循环变量相比,看起来相当大,但是 可以

    另外,我不确定在我问这个问题时是否存在这种情况,但无论如何,这是一个最新版本的作品。