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:

sevDesk Angebot – bis zu 12 Monate gratis

Mit dem aktuellen sevDesk Angebot bis zu 12 Monate gratis sichern. Rechnungswesen, Buchhaltung und Warenwirtschaft mit der umfangreichen Online Software sevDesk jetzt mit bis zu 12 Monaten gratis, je nach gewählter Laufzeit



Verwandte Themen: