AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Append Code optimieren aber was macht Sinn?
Thema durchsuchen
Ansicht
Themen-Optionen

Append Code optimieren aber was macht Sinn?

Ein Thema von Piro · begonnen am 1. Dez 2010 · letzter Beitrag vom 1. Dez 2010
 
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

Append Code optimieren aber was macht Sinn?

  Alt 1. Dez 2010, 11:15
Datenbank: MS SQL 2005 • Version: Express • Zugriff über: ADO
Moin zusammen,

Ich lesen ca. 1000 Datensätze mit folgendem Code ein, welcher ca. 15 Sekunden dauert. Ich verwende TADOConnection und TADODataSet.

Delphi-Quellcode:
...
 if FileExists(path_canban) = True then
 begin
   AssignFile(F, path_canban);
   Reset(F);

   while not EoF(F) do
   begin
     Readln(F, zeile);
     sl_zeile := Split(zeile,';', True); // ist nicht das Problem
     Inc(counter);

     try
       DSData.Close;
       DSData.CommandText := 'Select * from fullload_data';
       DSData.Open;

       DSData.Append;
       DSData.FieldByName('lname').AsString := sl_zeile[0];
       DSData.FieldByName('sachnr').AsString := sl_zeile[1];
       DSData.FieldByName('benennung').AsString := sl_zeile[2];
       DSData.FieldByName('zeichnungsnr').AsString := sl_zeile[3];
       DSData.FieldByName('lagerbestand').AsString := sl_zeile[4];
       DSData.FieldByName('liefermenge').AsString := sl_zeile[5];
       DSData.FieldByName('mindestbestand').AsString := sl_zeile[6];
       DSData.FieldByName('abrufnr').AsString := sl_zeile[7];
       DSData.FieldByName('tag').AsString := sl_zeile[8];
       DSData.FieldByName('abrufnr_zusatz').AsString := sl_zeile[9];
       DSData.FieldByName('aindex').AsString := sl_zeile[10];
       DSData.FieldByName('lieferort').AsString := sl_zeile[11];
       DSData.FieldByName('position').AsString := sl_zeile[12];
       DSData.FieldByName('kenn_es').AsString := ''; //sl_zeile[13];
       DSData.FieldByName('lnr').AsString := ''; //sl_zeile[14];
       DSData.Post;

       DSData.Close;
     Except
       //
     end;
   end;
   tbtn_fullload_import.Enabled := False;
 end;
...
In der Zukunft können sich die Daten verdoppeln. So, dass das Program 30 Sekunden braucht. Das ist nicht wirklich schlimm aber kann man es noch optimieren?

Ich habe es schon mit BULK INSERT versucht. Geht verdammt schnell. Leider gibt es ein paar Sachen, die dann nicht mehr funktionieren, die ich wärend des Insert benötige.

Über TADOQuery könnte man es auch machen aber ich weiß nicht, ob der Unterschied so groß ist. Bei TADODataSet habe ich auch schon die Eigenschaft Prepare=True gesetzt. Passiert aber nichts.

Meine Idee wäre, alle Daten mit Append in die Datenbank schreiben und zum Schluss ein Post. Leider habe ich dann nur einen Datensatz in der DB.

Habe das Forum schon einwenig durchsucht, was mich nicht weitergebracht hat.

Vielleicht sieht ja einer meinen Quellcode und weiß sofort, wo man was optimieren kann. Verständnisfehler sind nicht ausgeschlossen.

Vielen Dank im Voraus.
Sven
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz