2014-05-12 9 views
6

Mam bazę danych z widokami i procedurami przechowywanymi, które często wymagają modyfikacji. Chciałbym móc przechowywać te widoki w innym katalogu i dołączyć kod SQL podczas pisania migracji. Zasadniczo struktura reż byłobyZadzwoń do zewnętrznego sql z migracji drogą lotniczą

views/ 
    my_view.sql 
functions/ 
    my_func.sql 
sql/ 
    V1__add_view.sql 

I V1__add_view.sql byłoby coś

\i views/my_view.sql 

Które obecnie pracują w psql, ale nie w migracjach Flyway. Zaletą tego jest to, że kiedy chcieliśmy dokonać zmiany, możemy zmodyfikować widok w miejscu i uwzględnić go w następnej migracji. Po prostu wyeliminowałoby to ogromną liczbę wklejania kopii w widoku migracji.

Czy istnieje sposób na włączenie zewnętrznych skryptów SQL podczas migracji w locie?

+0

Czy kiedykolwiek to zorientować się? Interesuje mnie też coś takiego z innego powodu: duża liczba skryptów kreacji i sposób ich zamawiania. Obecne wytyczne z [Tomasz] (http://stackoverflow.com/users/605744/tomasz-nurkiewicz) polegają na używaniu przyrostowych numerów wersji _per file_ do wymuszania zamawiania - co moim zdaniem zmniejsza czytelność i wykrywalność. Chciałbym mieć pojedynczy skrypt migracji "Wersji", w którym używane są skrypty zawarte w odpowiedniej kolejności. – rbellamy

Odpowiedz

1

Wygląda na to, że możesz to zrobić, używając Repeatable migrations.

Nie sądzę, że flyway obsługuje wywoływanie zewnętrznych skryptów takich jak instrukcja \ i. Jeśli chcesz spróbować importować trasę, możesz użyć symboli zastępczych dla swoich skryptów.

Korzystanie przykład użyć zastępczy w pliku migracji sql

${my_view} 

Po wywołaniu flyway określić wartość zastępczą zastępczy tekstu ze swoimi poglądami/my_view.sql. Nie jestem pewien, co używasz zadzwonić drogę przelotu, ale mrówka byłoby coś

<loadfile property="flyway.placeholder" srcfile="views\my_view.sql"/> 
<flyway:migrate> 
    <locations> 
     <location path="database/migrations"/> 
    </locations> 
    <placeholders> 
     <placeholder name="my_view" value="${flyway.placeholder}"/> 
    </placeholders> 
</flyway:migrate> 

Dokumentacja zawiera również przykład: https://flywaydb.org/documentation/ant/migrate

+0

Edytowane w celu sugerowania używania powtarzalnej migracji (R__add_my_view.sql zamiast V1__add_view.sql) – fishy