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: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]