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.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‘);
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