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