Einzelnen Beitrag anzeigen

LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
40 Beiträge
 
Delphi 12 Athens
 
#1

wie am besten viele Daten schnell in SQL Einfügen mit Delphi

  Alt 2. Aug 2022, 15:50
Datenbank: MSSQL • Version: 2018 • Zugriff über: sa
Hallo,

ich hab ein kleines Problem mit der ADO SQL Insert Geschwindigkeit.

Ich habe eine Datensatz der ca. 800.000 Daten beinhaltet dieser wird via Delphi aufgearbeitet und ist in einer TObjectList<TData>.

Bisher hatte ich für SQL Inserts immer eine Stored Procedure via TAdoStoredProc realisiert, aber bei dieser Datenmasse ist das zu langsam.

Wenn ein Neuer Datensatz da ist werden die besehenden Daten aus der Tabelle erst gelöscht und dann die neuen Daten befüllt.

Die Datenstruktur:
Delphi-Quellcode:
  TData = class
    FID: string;
    FText: String;
    FOrt: string;
    FValue: Extended;
Die Tabelle sieht so aus:
Code:
ID   nvarchar(12)   
Text   nvarchar(255)   
Ort   nvarchar(10)   
Value   float
Mein Insert bisher (in der SP ist nur der eigentlicher Insert drin).
Delphi-Quellcode:
For Data in ObjList do
begin
  ADOSP_T_SP.Active := false;
  ADOSP_T_SP.Parameters.ParamByName('@ID').Value := Data.FID;
  ADOSP_T_SP.Parameters.ParamByName('@Text').Value := Data.FText;
  ADOSP_T_SP.Parameters.ParamByName('@Ort').Value := Data.FOrt;
  ADOSP_T_SP.Parameters.ParamByName('@Value').Value := Data.FValue;
  ADOSP_T_SP.Active := true;
end;
welche Möglichkeiten gib es sonst noch? TAdoTable, TAdoCommand....
was eignet sich am besten bei so einer Datenmenge?

Edit: Server ist ein MSSQL 2017 v14.0
Chris

Geändert von LoZe ( 2. Aug 2022 um 21:21 Uhr)
  Mit Zitat antworten Zitat