You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Hunter Peress <hu...@gmail.com> on 2006/10/25 04:49:55 UTC

[Solution]: error loading a mysqldump file using ant sql task's src

While pouring through the source,I found a solution!

Heres a basic way to read most mysql dumps using the sql task's src: whether
it be triggers,storedprocs,fields that contain comments...

-put all triggers and stored procedures in their own file. and use the
task's delimiter attribute (requires you delete the DELIMTER statement,
which means 1 delim per file)

-for files that barf because the comment sequence is within a string eg
insert into properties (value) values("<!-- -->");
use the keepformat attribute. Although the description in the docs isnt so
good, i got the idea from looking at the code of  SQLExec.java

This should be good. The problem is that the <sql> task does a lot of
parsing on the sql before it sends it off to the database specific
connections.

On 10/24/06, Scot P. Floess <fl...@mindspring.com> wrote:
>
> Hunter:
>
> OK, I see what you are saying now...  Sorry :(  Apparently I wasn't
> paying attention to what you were saying...
>
> Its odd to me the implementation isn't taking the character stream
> verbatim and hading through to JDBC - thus allowing JDBC to parse and do
> the right thing...so I guess Ant is parsing (perhaps partially) and then
> the JDBC layer gets to parse too?
>
> The problem I had (again this was probably 3 years ago) was that for any
> given line, the line was assumed to contain an entire SQL statement...if
> the SQL statement spanned multiple lines, a continuation character had
> to be included in the file.
>
> Scot
>
> Hunter Peress wrote:
> >> It is treating each line as ONE sql statement.  By using the -line
> >> continuation- character, it should fix the problem - namely the \
> >> character.
> >
> >
> > So? I gave 2 statements each on its own line. the problem is that ant
> > thinks
> > the
> > string inside the first quote is an actual sql comment
> >
> > the problem is that the ant sql task lacks some parsing:
> > from SQLExec.java
> >
> >            // SQL defines "--" as a comment to EOL
> >            // and in Oracle it may contain a hint
> >            // so we cannot just remove it, instead we must end it
> >            if (!keepformat) {
> >                if (line.indexOf("--") >= 0) {
> >                    sql.append("\n");
> >                }
> >            }
> >
> > i'm going to hack to make it only parse comments that arent within
> > quotes.
> >
> >
> > Placing SQL statements in a file makes perfect sense...perhaps he is
> >> trying to put database creation, or population information there?
> >
> >
> >
> >
> >
> >
> > I've
> >> done it before and I saw no reason why one wouldn't want to do that...
> >>
> >> And, this isn't an issue of ctrl-M characters...  I had this problem on
> >> a Linux system using a ViM created file under Linux...  Ant is treating
> >> the newline as a delimiter for the SQL statement.
> >>
> >> Martin Gainty wrote:
> >> > Hunter
> >> >
> >> > If Im not mistaken I think you just answered your own question
> >> > so when you put all the SQL statements together on one line then
> >> ant can
> >> parse the SQL
> >> > if you break the SQL apart with some varying number of unknown
> >> delimiters ant cannot understand your file contents
> >> > if you absolutely must use a file(I dont know why you would)
> >> > then tell ant what the the SQL statement delimiters are by specifying
> >> your own delimiter within the sql task
> >> >
> >> > Also be wary that Unix does not like nasty ctl-m ^M characters that
> >> dos
> >> editors toss in as newline endings
> >> > vi -b on the sql file will at least show you the whitespace
> characters
> >> so you can delete them
> >> >
> >> > Martin-
> >> > This e-mail communication and any attachments may contain
> confidential
> >> and privileged information for the use of the
> >> > designated recipients named above. If you are not the intended
> >> recipient, you are hereby notified that you have received
> >> > this communication in error and that any review, disclosure,
> >> dissemination, distribution or copying of it or its
> >> > contents
> >> > ----- Original Message -----
> >> > From: "Hunter Peress" <hu...@gmail.com>
> >> > To: "Ant Users List" <us...@ant.apache.org>; "Martin Gainty" <
> >> mgainty@hotmail.com>
> >> > Sent: Tuesday, October 24, 2006 8:15 PM
> >> > Subject: Example: error loading a mysqldump file
> >> >
> >> >
> >> >
> >> >> Ant file:
> >> >>              <sql
> >> >>
> >> classpath="../lib/mysql-connector-java-3.1.12-bin.jar
> >> "
> >> >>                   driver="com.mysql.jdbc.Driver"
> >> >>                   url="jdbc:mysql://localhost:3306/"
> >> >>                   userid=""
> >> >>                   password=""
> >> >>                   print="yes"
> >> >>                   src="wtf.sql"
> >> >>              >
> >> >> use what;
> >> >>              </sql>
> >> >>
> >> >> wtf.sql:
> >> >> insert into properties (value) values("<!-- -->");
> >> >> insert into properties (value) values("Hi");
> >> >>
> >> >> Ok so if in mysql console you source wtf.sql there are no
> >> problems, its
> >> >> valid mysql. But ant bombs on it.
> >> >> Ant can handle each line ,but put them together in a file and its
> >> bad.
> >> >>
> >> >>
> >> >> On 10/24/06, Martin Gainty <mg...@hotmail.com> wrote:
> >> >>
> >> >>> I know if I edit on windo and port to nix I will have <CR><LF>
> >> appended at
> >> >>> end of each line
> >> >>> for small files
> >> >>> vi -b
> >> >>> will show you the extra CR and you can easily delete the CR (which
> >> show up
> >> >>> as ^M) chars
> >> >>>
> >> >>> for comprehensive treatment of entire files to unix run the
> >> dostounix
> >> >>> utility
> >> >>> check out this link from the friendly folk from Santa Cruz for
> >> details
> >> >>> http://people.ucsc.edu/~chengyus/CE12L/DOSTOUNIX.htm
> >> >>>
> >> >>> Martin --
> >> >>>
> >> >>> This e-mail communication and any attachments may contain
> >> confidential
> >> and
> >> >>> privileged information for the use of the
> >> >>> designated recipients named above. If you are not the intended
> >> recipient,
> >> >>> you are hereby notified that you have received
> >> >>> this communication in error and that any review, disclosure,
> >> >>> dissemination, distribution or copying of it or its
> >> >>> contents
> >> >>> ----- Original Message -----
> >> >>> From: "Scot P. Floess" <fl...@mindspring.com>
> >> >>> To: "Ant Users List" <us...@ant.apache.org>
> >> >>> Sent: Tuesday, October 24, 2006 10:03 AM
> >> >>> Subject: Re: error loading a mysqldump file
> >> >>>
> >> >>>
> >> >>>
> >> >>>> Can you elaborate more on the error?
> >> >>>>
> >> >>>> Some years ago I was using the sql task and had a file full of SQL
> >> >>>> statements...  When I tried to use the sql task I was getting
> >> errors
> >> as
> >> >>>> well.   The solution, if memory serves, is that I had to use a \
> >> >>>> character at the end of each line until SQL termination.  So, if I
> >> had
> >> >>>> something like:
> >> >>>>
> >> >>>> create table foo
> >> >>>> (
> >> >>>> bar as int
> >> >>>> );
> >> >>>>
> >> >>>> I had to do this kind of thing:
> >> >>>>
> >> >>>> create table foo \
> >> >>>> ( \
> >> >>>> bar as int \
> >> >>>> );
> >> >>>>
> >> >>>> The problem (again if I can remember correctly) was that each line
> >> >>>> (meaning new line/carriage return) was being interpreted as the
> >> "whole"
> >> >>>> sql statement and submitted.
> >> >>>> Hunter Peress wrote:
> >> >>>>
> >> >>>>> using the sql task's src attribute i source a mysqldump file
> >> and it
> >> >>>>> errors.
> >> >>>>> mysql can source the file with no problems.
> >> >>>>> but in ant I source it and theres a syntax error.
> >> >>>>> There is no delimiter being set in the source.
> >> >>>>> also if take individually two insert statement and source those
> it
> >> >>>>>
> >> >>> works.
> >> >>>
> >> >>>>> but i combine them and i get a syntax error.
> >> >>>>>
> >> >>>>> in the mysqldump the text fields are xml documents so they have
> >> almost
> >> >>>>> every
> >> >>>>> imagineable character.
> >> >>>>>
> >> >>>>> im using standard utf8 encoding.   any ideas?
> >> >>>>>
> >> >>>>>
> >> >>>> --
> >> >>>> Scot P. Floess
> >> >>>> 27 Lake Royale
> >> >>>> Louisburg, NC  27549
> >> >>>>
> >> >>>> 252-478-8087 (Home)
> >> >>>> 919-754-4592 (Work)
> >> >>>>
> >> >>>> Chief Architect JPlate  http://sourceforge.net/projects/jplate
> >> >>>> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
> >> >>>>
> >> >>>>
> >> >>>>
> >> ---------------------------------------------------------------------
> >> >>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> >> >>>> For additional commands, e-mail: user-help@ant.apache.org
> >> >>>>
> >> >>>>
> >> >>>>
> >> > >
> >>
> >> --
> >> Scot P. Floess
> >> 27 Lake Royale
> >> Louisburg, NC  27549
> >>
> >> 252-478-8087 (Home)
> >> 919-754-4592 (Work)
> >>
> >> Chief Architect JPlate  http://sourceforge.net/projects/jplate
> >> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> >> For additional commands, e-mail: user-help@ant.apache.org
> >>
> >>
> >
>
> --
> Scot P. Floess
> 27 Lake Royale
> Louisburg, NC  27549
>
> 252-478-8087 (Home)
> 919-754-4592 (Work)
>
> Chief Architect JPlate  http://sourceforge.net/projects/jplate
> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>