2012-02-23 2 views
5

Я оцениваю Flyway для использования в моем проекте. Наши текущие SQL-скрипты содержат заполнители для таких вещей, как URL-адреса, которые будут иметь разные доменные имена в зависимости от среды (dev, qa, prod).Как работают заполнители в пролете?

В частности, мы могли бы иметь операторы INSERT, как

INSERT INTO FEED VALUES ('app.${env.token}.company.org/feed1', 'My Feed'); 

$ {env.token} должно быть заменено на 'разработчика', 'ца', или '' прод.

У нас есть около 50 различных свойств, которые могут потребоваться замена в SQL-скриптах. Все свойства находятся в одном или двух файлах свойств.

Есть ли способ запустить задачу миграции Flyway Ant, чтобы она вытаскивала токены замены и значения из файла свойств? Что-то вроде задачи фильтра Ant?

ответ

9

В настоящее время при поставке заполнителей в качестве свойств имя свойства должно иметь префикс flyway.placeholders.

Например, $ {env.token} заполнитель может быть задан непосредственно в этой Ant собственности: flyway.placeholders.env.token

Там в настоящее время нет поддержки для передачи файла свойств непосредственно , без использования префиксов для имен свойств. Не стесняйтесь поднимать вопрос в Issue Tracker. :-)

+1

Axel, можете ли вы добавить это объяснение к документации здесь: https://flywaydb.org/documentation/migration/sql Я не мог понять правильное использование заполнителей перед чтением здесь. – csonuryilmaz

1

Если маркер был subdomain:

INSERT INTO FEED VALUES ('app.${subdomain}.company.org/feed1', 'My Feed'); 

Значения в flyway.conf:

flyway.url=jdbc:mydb://db 
flyway.user=root 
flyway.schemas=schema1 
flyway.placeholders.subdomain=example 

Или командной строки:

flyway -url=jdbc:mydb://db -user=root -schemas=schema1 -placeholders.subdomain=example migrate 

бы запустить скрипт как :

INSERT INTO FEED VALUES ('app.example.company.org/feed1', 'My Feed');