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





		
				
		







