Frage

Ich suche zur Zeit in einen Software-Build-Prozess zu automatisieren, die ein Datenbankschema enthält definiert in MySQL Workbench.

Mit Workbench Scripting-Fähigkeiten, ich möchte ein Workbench-Dokument öffnen und exportieren das Schema als SQL-Skript erstellen.

Was ich möchte, ist wissen, wenn es eine Funktion, dass die Exporte das gesamte Schema in einem Schritt als Workbench Datei | Exportieren | Weiterleiten Ingenieur SQL CREATE Script , automatisch alle Abhängigkeiten zwischen den Tabellen Handhabung.

Ich habe einige Kandidaten im DbMySQL Modul gefunden, dass Macht zu tun, dass (generateSQL(GrtNamedObject, dict, string) und makeSQLExportScript(GrtNamedObject, dict, dict, dict)), aber ich bin über die Parameter verwirrt sie erwarten - das erste das Schema-Objekt sein könnte, aber was sind die anderen Argumente?

Kann mir jemand sagen, ob meine Vermutung richtig ist und / oder gibt mir Verwendungsbeispiele?

Bisher habe ich komme mit einer manuellen Lösung (beachten Sie, dass dies funktioniert derzeit nicht sortiert die Tabellen nach ihren FK Beziehungen):

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

Die Frage bezieht sich auf Wie SQL-Skript generiert von MySQL Workbench mit Command Line? , aber die Antwort fand dort wirklich abstrakt ist und sagt nichts über die tatsächlich die Scripting Feature von MySQL Workbench.

War es hilfreich?

Lösung

Es scheint, dass andere Frage verknüpft bekam 2013 Dezember beantwortet , mit freundlicher Genehmigung von MADHEAD , wenn auch mit trivialen Code Glitches Moll und in Python statt Lua, so dass hier die Python-Version, die für mich funktioniert:

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

Sieht ziemlich groß im Vergleich zu der Schleife Variante aber könnte einige Vorteile bringen (nicht getestet, aber ich könnte mir vorstellen, Workbench können aus der richtigen Reihenfolge zu Figur sind Tabellen usw. zu erstellen.).

Auch ich bin nicht sicher, ob diese bestanden hat, wenn ich die Frage stellte, aber wie auch immer, diese Arbeiten auf einer aktuellen Version.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top