Eine Reihe von Datensätzen in einem Rutsch in eine Firebird-Datenbank schreiben (Bulk-Insert)

Eine Reihe von Datensätzen in einem Rutsch in eine Firebird-Datenbank schreiben (Bulk-Insert).

Obwohl es so etwas wie z.B. eine SQL-92-Norm gibt (u.a.) unterschieden sich die meisten SQL-Server in Ihren Details nicht unerheblich. Länger gesucht habe ich für eine Lösung, wie man unter Firebird (mit Delphi/Lazarus) eine ganze Reihe von Datensätze in einem Rutsch in die Datenbank schreibt, also ein Bulk-Insert. Da vielleicht auch der eine oder andere mal nach einer Lösung für diese Aufgabe sucht, hier ein Beispiel:
myQuery.sql.Text:=’execute block as begin ‚;
myQuery.sql.add(‚Insert into mytable (Feld1,Feld2) values(‚+QuotedStr(‚Inhalt1′)+‘,’+QuotedStr(‚Inhalt2′)+‘);‘);
myQuery.sql.add(‚Insert into mytable (Feld1,Feld2) values(‚+QuotedStr(‚Inhalt3′)+‘,’+QuotedStr(‚Inhalt4′)+‘);‘);
myQuery.sql.add(‚Insert into mytable (Feld1,Feld2) values(‚+QuotedStr(‚Inhalt5′)+‘,’+QuotedStr(‚Inhalt6′)+‘);‘);

myQuery.sql.add(‚end‘);
Try
myQuery.ExecSQL;
except
on e: exception do
begin
showmessage(e.message);
&& … z.B. entsprechendes Transaktion-Handling wie  Rollback
end;
end;


Das entscheidende ist also
myQuery.sql.Text:=’execute block as begin ‚;

und

myQuery.sql.add(‚end‘);

Werbung & Infos:


Verwandte Themen: