2015-04-14 3 views
0

Я использую Scriptella ETL весной. Я хочу изменить схему db и выполнить обновление db при выполнении моей программы. Я не нашел ссылки на это, кроме способа использования ANT. db-upgrade exampleScriptella - интеграция с весной - обновление базы DB Как?

Хотел бы узнать, можем ли мы написать отдельный sql-файл, например v1-v2.xml, с новыми изменениями и создания операторов и ссылаться на него в контексте spring.xml.

Мой текущий контекст весна XML реферирование ETL ..

<bean id="etlProgress" class="scriptella.interactive.ConsoleProgressIndicator"/> 
<bean id="etlExecutor" class="scriptella.driver.spring.EtlExecutorBean"> 
    <property name="configLocation" value="etl.xml"/> 
    <property name="progressIndicator"><ref local="etlProgress"/></property> 
</bean> 

Любая помощь здесь пожалуйста?

ответ

0

Нашел ответ самостоятельно. В файле etl.xml вы можете добавить запрос, который запрашивает таблицу MetaInf. В моем случае у меня была таблица metainf, как это.

CREATE TABLE Metainf (
     buildnum int primary key 
    ); 
    INSERT INTO Metainf VALUES (1); 

Это означает, что мне нужно запросить «buildnum», чтобы проверить версию db. Это можно сделать следующим образом:

<query> 
    <!-- Selects current DB build --> 
    SELECT * FROM Metainf 
    <!-- Check if upgrade is necessary --> 
    <script if="buildnum lt 1"> 
     <!--Upgrades DB to build 1 --> 
     <!--...--> 
     <!-- Update Metainf to confirm successful upgrade --> 
     UPDATE Metainf SET buildnum=1; 
    </script> 
    <script if="buildnum eq 1"> 
     <!-- upgrade scripts for subsequent builds --> 

     UPDATE Metainf SET buildnum=2; 
    </script> 
</query> 

Я разместил свой старый файл db и побежал после этого изменения. Вуаля! У меня есть новые изменения в базе данных.

Люди, которые ищут этот ответ, попробуйте и дайте мне знать, если он сработает и для вас.

С благодарностью