Import / Update vieler Datensätze

23/02/2008 - 16:45 von Martin Specht | Report spam
Hallo zusammen,

zur Zeit aktualisiere / importiere ich die Daten wie folgt:

QuerySelect.ParamByName('ARTICLE'):='XXX'; // unique key
QuerySelect.ExecQuery;
if QuerySelect.Eof
then begin
// setting all Parameters
QueryInsert.ExecQuery;
end
else begin
// setting all Parameters
QueryUpdate.ExecQuery;
end;

Dieser Programmteil wird natürlich für
jeden Datensatz aufgerufen, was bei
100000 Datensàtzen ca. 8 Minuten
dauert. - Leider nicht schnell genug.
Hat jemand eine bessere Idee?
Zum einsatz kommen die FIBPlus-Komponenten
in Verbindung mit Firebird 2 und Delphi 2007.

MfG
Martin
 

Lesen sie die antworten

#1 Florian Hector
23/02/2008 - 17:41 | Warnen spam
Hallo Martin

zur Zeit aktualisiere / importiere ich die Daten wie folgt:

QuerySelect.ParamByName('ARTICLE'):='XXX'; // unique key
QuerySelect.ExecQuery;
if QuerySelect.Eof
then begin
// setting all Parameters
QueryInsert.ExecQuery;
end
else begin
// setting all Parameters
QueryUpdate.ExecQuery;
end;

Dieser Programmteil wird natürlich für
jeden Datensatz aufgerufen, was bei
100000 Datensàtzen ca. 8 Minuten
dauert. - Leider nicht schnell genug.
Hat jemand eine bessere Idee?
Zum einsatz kommen die FIBPlus-Komponenten
in Verbindung mit Firebird 2 und Delphi 2007.



Du kannst das Ganze in eine Stored Procedure verlagern, der gibst du die Werte vom Datensatz mit.
Zuerst prüfst du innerhalb der Procedure genau wie jetzt auch, ob der Datensatz schon existiert.
Wenn ja, wird er überschrieben, wenn nein, wird er neu eingefügt.

Die Zeitersparnis ergibt sich daraus, dass erstens alles auf dem Server ablàuft und du nur ein
einziges mal pro Datensatz die Parameter setzen musst.

Florian

Ähnliche fragen