AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Viele Datensätze Updaten / vergelichen
Thema durchsuchen
Ansicht
Themen-Optionen

Viele Datensätze Updaten / vergelichen

Ein Thema von Dumpfbacke · begonnen am 15. Jul 2007 · letzter Beitrag vom 18. Jul 2007
 
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Viele Datensätze Updaten / vergelichen

  Alt 15. Jul 2007, 16:36
Datenbank: Interbase • Version: V6.1 • Zugriff über: InterbaseExpress
Hallo leibe Delphianer,
ich muß hier etlich Datensätze vergeleiche bzw. aufbereiten updaten. Die Daten werden im CSV Format geliefert. Als erstes übertrage ich die Daten mal in eine Interbase Datei. Dieses Daten sollen nun umgewandelt bzw. mit Daten in eiener anderen Interbase DB verglichen werden. Es handelt sich um ca. 700.000 Datensätze.

Ich bekomme immer nach ca. 70.000 Datensätze eine Fehlermeldung, das zu wenige Arbeitsspeicher vorhanden ist und das auf einem Server mit 8 GB Ram.

Ich denke mal, das ich ein Fehler in meinen Programm habe welche ich einfach nicht finden kann. Ich habe mal den Code auf das nötigste gekürzt und hoffe, das mir hier jemand helfen kann. Es sein den Speicher nicht mehr freizugeben

Zuerst mal die Komponenten
SucheDaten1,SucheDaten,SucheDaten3,KanalSuchen sind TIBQuery´s
BearbeiteDaten1 ist eine TIBDataset

Ich habe hier schon einiges versucht wie z.B. ein Commit auf die Datenabk nach ca. 10.000 Datensätzen. Nur gebracht hat bis jetzt alles noch nicht.


Delphi-Quellcode:
procedure TPPusKanalEinlesen.DatenEinlesen;
var
I: Integer;
FehlerZaehler: integer;
Kanal: string;
HKanal1,HKanal2,HKanal3: string;
KanalZahl: integer;
Zaehler: integer;
begin
 Daten.SucheDaten1.Prepare;
 Daten.SucheDaten2.Prepare;
 Daten.SucheDaten3.Prepare;
 Daten.BearbeiteDaten1.Prepare;
 Daten.AnfangsDaten.Active := False;
 Daten.AnfangsDaten.Active := True;
 Daten.AnfangsDaten.First;
 While not Daten.AnfangsDaten.Eof do
     begin
     Daten.SucheDaten1.ParamByName('Wert1').AsSTring := Daten.AnfangsDaten.FieldByNAme('Wert1').AsString;
     Daten.SucheDaten1.Active := True;
     Daten.SucheDaten2.ParamByName('Wert2').AsSTring := Daten.AnfangsDaten.FieldByNAme('Wert2').AsString;
     Daten.SucheDaten2.Active := True;
     if (Daten.SucheDaten1.RecordCount > 0) and (Daten.SucheDaten2.RecordCount > 0 ) then
      begin
       Daten.BearbeiteDaten1.ParamByName('Test1').AsString := Daten.SucheDaten2.FieldByName('Test1').AsString;
       Daten.BearbeiteDaten1.ParamByName('Test2').AsString := Daten.SucheDaten1.FieldByName('Test2').AsString;
       Daten.BearbeiteDaten1.Active := True;
       if Daten.BearbeiteDaten1.RecordCount > 0 then
        begin
         //Wurde gefunden
         if Daten.BearbeiteDaten1.FieldByName('Kanal').AsString = 'then
          begin
           //Es ist bis jetzt noch kein Kanal angegeben.
           Daten.BearbeiteDaten1.Edit;
           //Hier wird noch etwas andres gemaucht habe ich jedoch gelöscht da unwichtig
           Daten.BearbeiteDaten1.FieldByName('TestDatum').AsString := DateToStr(AktuellesDatum);
           Daten.BearbeiteDaten1.Post;
          end
         else
          begin
           if Daten.BearbeiteDaten1.FieldByName('Kanal').AsString <> Kanal then
            begin
             Daten.BearbeiteDaten1.Edit;
             //Hier wird noch etwas andres gemaucht habe ich jedoch gelöscht da unwichtig
             Daten.BearbeiteDaten1.FieldByName('TestDatum').AsString := DateToStr(AktuellesDatum);
             Daten.BearbeiteDaten1.Post;
            end;
          end;
        end
       else
        begin
         FehlerZaehler := FehlerZaehler +1;
         Fehler.Caption := IntToStr(FehlerZaehler);
        end;
      end
     else
      begin
       FehlerZaehler := FehlerZaehler +1;
       Fehler.Caption := IntToStr(FehlerZaehler);
      end;
   Daten.AnfangsDaten.Next;
  end;
 Daten.TransEdit.Commit;
end;
Tanja
  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 04:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz