Экспорт.MWB в рабочий файл.SQL с помощью командной строки

Недавно мы установили сервер, предназначенный для модульных тестов, который автоматически развертывает обновления через Jenkins после выполнения коммитов и отправляет письма, когда замечен регресс
> Это требует, чтобы наша база данных всегда была актуальной

Поскольку ссылка на схему базы данных является нашей MWB, во время развертывания мы добавили несколько сценариев, которые экспортируют.mwb в.sql (с использованием python). Это сработало нормально... но все еще имеет некоторые проблемы

Наша главная проблема заключается в том, что функции, присоединенные к схеме, вообще не экспортируются, что делает БД непригодной для использования.

Мы хотели бы взломать код на python, чтобы он экспортировал скрипты... но не нашли достаточно информации об этом. Вот единственный документ, который мы нашли. Это не очень понятно для нас. Мы не нашли никакой информации об экспорте скриптов.
Все, что мы нашли, это то, что класс db_Script существует. Мы не знаем, где мы можем найти его экземпляры в нашем контексте выполнения, и не могут ли они быть легко экспортированы. Мы что-то пропустили?

Для справки, вот скрипт, который мы сейчас используем для преобразования mwb в sql (mwb2sql.sh).
Он вызывает MySqlWorkbench из командной строки (мы используем фиктивный x-сервер для очистки графического вывода).
Нам нужно завершить часть python, переданную в нашем вызове командной строки workbench.

# 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 ответов

Другие вопросы по тегам