Hi Antoine,
Thank you very much for providing me this example. 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. I would appreciate if you could take a look at the script and assist. 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> Date: Thu, 4 Nov 2010 10:45:35 -0700 From: ml-node+3250502-1415855530-143...@n5.nabble.com To: apache...@hotmail.co.uk Subject: Re: How to script database upgrade using ANT script On 11/4/10 1:35 PM, Java Jboss wrote: > > Hi Antoine, > > Thank you for this update. I am using a linux server. I've been asked to do > this in ANT only. Can you possibly provide me an example of how a similar > process might be scripted using ANT? > > As I have never used ANT or any other similar products before I am using > Google for help. I suggest that you start by reading the manual under http://ant.apache.org/manual/ first. You would start by writing a build file for your work looking like that <project name="databaseupgrade"> <target name="all" depends="createdatabase,loaddump,runscripts"/> <target name="init"> <property name="databasename" value="mynewdatabase"/> </target> <target name="createdatabase" depends="init"> <exec command="sh" failonerror="true"> <arg value="createdatabase.sh"/> <arg value="${databasename}"/> </exec> </target> <target name="loaddump"> <!-- some action goes here --> </target> <target name="runscripts"> <!-- some action gets here too --> </target> </project> > > Thank you. > > > Date: Thu, 4 Nov 2010 09:46:31 -0700 > From: [hidden email] > To: [hidden email] > Subject: Re: How to script database upgrade using ANT script > > Hi, > > you will need to use the<exec/> task for steps like creating the > database and importing the dump into the new schema. > Once your database is up, you can use the<sqlexec/> task to run DDL and > DML statements. > To check whether a script exists, there is a task called<available/> > which can set a property if a file is available. > For error checking, you can run<exec/> with failonerror="true" to stop > your build if a script fails. > You need to test before hand whether the system commands or the scripts > that you will run to create the database and import the dump are > returning proper exit statuses. (setting ERRORLEVEL on Windows or $? on > UNIX). > > Regards, > > Antoine > > On 11/4/10 12:28 PM, Java Jboss wrote: > >> Hi, >> >> I’m a complete newbie to ANT and I need to write an ant script which >> upgrades a database version from base level 1.00 to a given version number >> by running a series of mysql (ver 5.1.45) scripts. >> >> Using ANT script I need to: >> 1) create a database >> 2) import mysql database(s) dump to a new schema >> 3) check current database version >> 4) then check if sql script1 exists >> 4.1) if "No" then check for next sql script until it has checked for all >> scripts then "end" >> 4.2) if "yes" then run first sql script then check if second sql script >> exists - if "yes" then run second sql script and so on until the required >> database version is reached. >> 5) check database version is at correct level then “end” or else start the >> loop again >> 6) how can I script error checking also >> >> Thank you all in advance. >> > --------------------------------------------------------------------- > To unsubscribe, e-mail: [hidden email] > For additional commands, e-mail: [hidden email] > > > > > > > View message @ > http://ant.1045680.n5.nabble.com/How-to-script-database-upgrade-using-ANT-script-tp3250375p3250409.html > To unsubscribe from How to script database upgrade using ANT script, click > here. > --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] View message @ http://ant.1045680.n5.nabble.com/How-to-script-database-upgrade-using-ANT-script-tp3250375p3250502.html To unsubscribe from How to script database upgrade using ANT script, click here. -- View this message in context: http://ant.1045680.n5.nabble.com/How-to-script-database-upgrade-using-ANT-script-tp3250375p3250988.html Sent from the Ant - Users mailing list archive at Nabble.com.