Navigation

 

Artikel Kategorien

Um eine SQL-Datei aus MySQL Workbench zu erzeugen, sind insgesammt 6 klicks notwendig, sowie eine Dateisuche. Da wir während der Entwicklung an der Datenbank sowie beim Deployment das Schema als SQL Datei exportieren müssen, habe ich kurzerhand ein Apple Skript geschrieben das diese arbeit automatisch ausführt. Der Dateiname wird dabei als Konsolenargument übergeben.

Wichtig hierbei ist jedoch folgendes: Das Skript kann erst ausgeführt werden, wenn man unter den Systemeinstellungn (“Security & Privacy” > “Accessability”) die Anwendung “Terminal” hinzufügt und den Zugriff erlaubt.

--forward-engineer.scpt
on run argv
delay 5
tell application "MySQLWorkbench"
activate
end tell
delay 1
menu_click({"MySQLWorkbench", "File", "Export", "Forward Engineer SQL CREATE Script..."})
tell application "System Events" to tell process "MySQLWorkbench"
tell window "Forward Engineer SQL Script"
tell group 1
set value of text field 1 to item 1 of argv
end tell
click button "continue"
click button "continue"
click button "finish"
end tell
end tell
tell application "MySQLWorkbench"
quit
end tell
-- `menu_click`, by Jacob Rus, September 2006
--
-- Accepts a list of form: `{"Finder", "View", "Arrange By", "Date"}`
-- Execute the specified menu item. In this case, assuming the Finder
-- is the active application, arranging the frontmost folder by date.
end run
on menu_click(mList)
local appName, topMenu, r
-- Validate our input
if mList's length < 3 then error "Menu list is not long enough" -- Set these variables for clarity and brevity later on set {appName, topMenu} to (items 1 through 2 of mList) set r to (items 3 through (mList's length) of mList) -- This overly-long line calls the menu_recurse function with -- two arguments: r, and a reference to the top-level menu tell application "System Events" to my menu_click_recurse(r, ((process appName)'s ¬ (menu bar 1)'s (menu bar item topMenu)'s (menu topMenu))) end menu_click on menu_click_recurse(mList, parentObject) local f, r -- `f` = first item, `r` = rest of items set f to item 1 of mList if mList's length > 1 then set r to (items 2 through (mList's length) of mList)
-- either actually click the menu item, or recurse again
tell application "System Events"
if mList's length is 1 then
click parentObject's menu item f
else
my menu_click_recurse(r, (parentObject's (menu item f)'s (menu f)))
end if
end tell
end menu_click_recurse

Zum starten des exports muss man nun nur noch MySQL Workbench mit dem entsprechenden Model öffnen und kann mittels folgenden Terminalbefehls das Skript starten.:

osascript forward-engineer.scpt "/tmp/schema.sql"

 

Zuletzt aktualisiert am 22.10.2015