There are a number of projects for this as well. Here's one I know of:

https://github.com/ReadyTalk/staccato

There are a number of others out there as well. I'd suggest trying on of these 
projects to do your migrations and version checking because you'll run into 
maintenance nightmares otherwise.

-bp


On Nov 5, 2010, at 4:48 AM, Java Jboss wrote:

> 
> Hi,
> 
> Thank you for the suggestions so far from Antoine and Michael. unfortunately
> I've been asked to use ANT only without using unix shell scripts.  I have
> tried to tackle it as individual modules using ANT script  running the 1st
> iteration of the mysql scripts against newschema1.  I need to run each
> iteration against all 4 schemas, then it would do a version check and if
> version check wasn't met then it would start 2nd iteration and so on. 
> 
> This is rather urgent so I would appreciate any assistance. I need to create
> a recursive loop which I can't do and also some error checking module as
> well as some how linking these modules together so that they depend on each
> other etc... At the moment I have to run each target on its own.
> 
> Please feel free to change my novice attempt at writing an ANT script.
> 
> Thank you
> 
> <!-- ***************************************
>  Restore MySQL database 
>  **************************************** -->  
> <target name="restore-db" >
>    <!-- Clean up the database by deleting and then creating it. -->
>    <antcall target="delete_db"/>
>    <antcall target="create_db"/>
> <!-- Import data from the backup file. -->
>    <exec executable="${my.sql}" input="db_dumps/db1.sql">
>      <arg value="--user=root"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema1>"/>
>    </exec>
>   <exec executable="${my.sql}" input="db_dumps/db2.sql">
>      <arg value="--user=root"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema2>"/>
>    </exec>
>  <exec executable="${my.sql}" input="db_dumps/db3.sql">
>      <arg value="--user=root"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema3>"/>
>    </exec>
>  <exec executable="${my.sql}" input="db_dumps/db4.sql">
>      <arg value="--user=root"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema4>"/>
>    </exec>
> </target>
> 
>  <target name="delete_db">
>    <exec executable="${my.sql}">
>      <arg value="--user=root"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="--force"/>
>      <arg value="drop"/>
>      <arg value="<newschema1>"/>
>      <arg value="<newschema2>"/>
>      <arg value="<newschema3>"/>
>      <arg value="<newschema4>"/>
>    </exec>
>  </target>
> 
>  <target name="create_db">
>    <exec executable="${my.sql}">
>      <arg value="--user=root"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="--force"/>
>      <arg value="create"/>
>      <arg value="<newschema1>"/>
>      <arg value="<newschema2>"/>
>      <arg value="<newschema3>"/>
>      <arg value="<newschema4>"/>
>    </exec>
>  </target>
> 
> <!-- ***************************************
>  Get database version 
>  **************************************** -->  
> <target name="get-db-version" >
>       <exec executable="${my.sql}" outputproperty="get-db-version.out"
> input="getdbver.sql">
>           <arg line="--host=${server.ip}"/>
>           <arg line="--user=root"/>
>           <arg line="--password=<password>"/>
>           <arg line="-D${newschema1}"/>
>     </exec>
>   <echo>Is at ${get-db-version.out}</echo>
> </target> 
> 
> <!-- ************************************************
>           Check database upgrade scripts exists 
>  *********************************************** -->
> <target name="db-version" if="get-db-version.out" depends="get-db-version" >
>   <echo>Running upgrade from ${get-db-version.out}</echo>
> 
> <condition property="script1.exists">
>           <available filepath="<directory>" file="script1.sql"/>
>        </condition>
>         <antcall target="run-script1"/>
>       <condition property="script2.exists">
>           <available filepath="<directory>" file="script2.sql"/>
>        </condition>
>   <antcall target="run-script2"/>
> <condition property="script3.exists">
>           <available filepath="<directory>" file="script3.sql"/>
>        </condition>
>   <antcall target="run-script3"/>
> <condition property="script4.exists">
>           <available filepath="<directory>" file="script4.sql"/>
>        </condition>
>   <antcall target="run-script4"/>
> </target>
> 
> <!-- ***************************************
>              Run database upgrade scripts 
>  **************************************** -->  
> <target name="run-script1" if="script1.exists" >
>      <echo>Running sql in dir <directory></echo>
>      <exec executable="${my.sql}" input="<directory>/script1.sql"
> failonerror="true">
>      <arg value="--user=<username>"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema1>"/>
>      </exec>
> </target>
> <target name="run-script2" if="script2.exists" >
>      <echo>Running sql in dir <directory></echo>
>      <exec executable="${my.sql}" input="<directory>/script2.sql"
> failonerror="true">
>      <arg value="--user=<username>"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema1>"/>
>      </exec>
> </target>
> <target name="run-script3" if="script3.exists" >
>      <echo>Running sql in dir <directory></echo>
>      <exec executable="${my.sql}" input="<directory>/script3.sql"
> failonerror="true">
>      <arg value="--user=<username>"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema1>"/>
>      </exec>
> </target>
> <target name="run-script4" if="script4.exists" >
>      <echo>Running sql in dir <directory></echo>
>      <exec executable="${my.sql}" input="<directory>/script4.sql"
> failonerror="true">
>      <arg value="--user=<username>"/>
>      <arg value="--password=<password>"/>
>      <arg value="--host=localhost" />   
>      <arg value="--port=3306" />   
>      <arg value="<newschema1>"/>
>      </exec>
> </target>
> 
> 
> -- 
> View this message in context: 
> http://ant.1045680.n5.nabble.com/How-to-script-database-upgrade-using-ANT-script-tp3250375p3251629.html
> Sent from the Ant - Users mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
> For additional commands, e-mail: user-h...@ant.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to