2014-05-12 2 views
6

자주 수정해야하는보기 및 저장 프로 시저가있는 데이터베이스가 있습니다. 이 뷰를 다른 디렉토리에 저장할 수 있고 마이그레이션을 작성할 때 sql 코드를 포함하고 싶습니다. 기본적으로, 디렉토리 구조가이동 경로 마이그레이션에서 외부 SQL 호출

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

것 그리고 V1__add_view.sql이 될 뭔가 이동 경로 마이그레이션에

\i views/my_view.sql 
현재 psql의에서 작동

있지만

있다. 이점은 변경을 원할 때 뷰를 수정하고 다음 마이그레이션에 포함시킬 수 있다는 것입니다. 또한보기 마이그레이션에서 엄청난 양의 복사 붙여 넣기를 제거 할 수 있습니다.

이동 경로 마이그레이션에 외부 SQL 스크립트를 포함 할 수있는 방법이 있습니까?

+0

혹시이 파악 했는가를? 나는 또한 다른 이유로이 같은 것에 흥미가있다. 많은 수의 생성 스크립트와 그것들이 어떻게 주문되었는지. Tomasz (http://stackoverflow.com/users/605744/tomasz-nurkiewicz)의 현재 지침에 따르면 증분 버전 번호를 사용하여 주문을 시행하는 것으로 나타났습니다. 제 생각에는 가독성과 발견 가능성이 떨어집니다. 포함 된 스크립트가 올바른 순서로 사용되는 단일 "버전"마이그레이션 스크립트를 갖고 싶습니다. – rbellamy

답변

1

Repeatable migrations을 사용하여이 작업을 수행 할 수있는 것 같습니다.

나는 flyway가 \ i 문과 같은 외부 스크립트를 호출하는 것을 지원하지 않는다고 생각합니다. 가져 오는 경로를 시도하려면 스크립트에 대한 자리 표시자를 사용할 수 있습니다.

귀하의 예제를 사용하여,

${my_view} 

당신이 이동 경로 전화

는 귀하의 의견/my_view.sql에서 텍스트와 자리 교체 값을 정의하여 SQL 마이그레이션 파일의 자리 표시자를 사용합니다. 난 당신이 이동 경로 전화를 사용중인 모르겠지만, 개미는

<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> 

같은 것 문서는 또한 예를 들어 있습니다 https://flywaydb.org/documentation/ant/migrate

+0

반복 가능한 마이그레이션을 사용하여 제안하도록 편집 됨 (V1__add_view.sql 대신 R__add_my_view.sql) – fishy