[fpc-pascal] MySQL insert, load data
Wolfram Kläger
wolfram.klaeger at web.de
Fri Feb 15 12:33:27 CET 2008
Ok. First one was simple. Keyword and opening bracket must be separated
by a blank, e.g.
'.. MYTABLE(..' // wrong
'.. MYTABLE (..' // great
'..)values(..' // wrong
'..) values (..' // great
All field contents have to be bracketed by double apostrophes, e.g.
q.sql.add('''Florian Klaempfl'',');
except it's an integer value, e.g.
q.sql.add('1,');
Date values seem to be put as formatted strings. Unfortunately, my MySQL
does not know Joost. His example, '1-jan-1975' works here as '1975.1.1'
only. Guess this is a config issue.
Now what about LOAD DATA?
I still have no idea where to look for it. I learned TSQLQuery is
descending Tbufdataset <- TDBDataSet <- TDataset <- TComponent and
assume there is somewhere an option to load from a CSV text file or stream.
But how to push it forward to MySQL?
Wolfram
// Wolfram Kläger, 14.02.2008 22:49
> Along Joost's examples I managed to get connected, create a table, put a
> query, get the result, and insert a single row. But when I try to insert
> several rows at once, I get an EDatabaseError "near" to first char of
> second row.
>
> ...
> q.SQL.Clear;
> q.Add('insert into MYTABLE(c1, c2, ..) values ');
> q.Add('(r1v1, r1v2, ..),');
> q.Add('(r2v1, r2v1, ..),');
> ..
> q.Add(';');
>
> What am I missing or is multiple insert not supported?
>
> Alternatively, MySQL provides the LOAD DATA [LOCAL] INFILE statement. So
> far I was not able to find a special sqldb wrapper for it. Is it done
> via ExecuteDirect?
More information about the fpc-pascal
mailing list