Das
ZQuery1.SQL.Text := 'INSERT INTO TestTabelle (Wert1, Wert2) VALUES(:v1, :v2)';
reicht doch einmal aus, also vor der Schleife.
Und du kannst mal probieren, ob eine Zusammenfassung mehrere Werte noch ein bissl was rausholen kannst.
Delphi-Quellcode:
ZQuery1.SQL.Text := 'INSERT INTO TestTabelle (Wert1, Wert2) VALUES (:v0, :v1), (:v2, :v3), (:v4, :v5), (:v6, :v7);';
...
with ZQuery1.Params do begin
ParamValues[0] := SG1.Cells[0, i];
ParamValues[1] := SG1.Cells[1, i];
ParamValues[2] := SG1.Cells[0, i + 1];
ParamValues[3] := SG1.Cells[1, i + 1];
ParamValues[4] := SG1.Cells[0, i + 2];
ParamValues[5] := SG1.Cells[1, i + 2];
ParamValues[6] := SG1.Cells[0, i + 3];
ParamValues[7] := SG1.Cells[1, i + 3];
end;
ZQuery1.ExecSQL;
Mit vielen kleinen Inserts, haben wir in Postgres, mit PgDAC, etwa 60 bis maximal 250 Datensätze rausbekommen.
Mit deaktivierten Triggern und soeinem zusammengefassten Insert sind wir schon auf über 600 DS/s gekommen.
Das liegt aber irgendwie am Delphi, denn in C# soll es wesentlich schneller gehn ... ich glaub da was von über 10.000 DS/s gehört zu haben.
Wenn dei
DBMS sowas wie einen COPY-Befehl kennt, worüber man z.B. die Daten via einer
CSV-Datei direkt in die Datenbank reinbekommt, dann wäre das wohl der schnellste Weg.