Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#22

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank

  Alt 7. Okt 2017, 12:45
Ja, aber könnte es dann nicht so sein, dass sowohl die DLL, als auch die DataSet-Komponente die gesamten Daten separat im Speicher vorhalten?

Damit hätte doch dann die Anwendung die Daten zweimal im Speicher?

Oder ein anderer Ansatz:

Statt mit 'nem DataSet und Append, 'ne Query nehmen. Das könnte dann sinngemäß ungefähr (ungetestet) so aussehen:
Delphi-Quellcode:
  AssignFile(F, 'C:\daten.txt');
  reset(F);
  form1.Query1.SQL.Clear;
  form1.Query1.SQL.Add('EXECUTE BLOCK BEGIN');
  repeat
    begin
      readln(F, temp);
      x := x + 1;
      form1.Query1.SQL.Add(Format('insert into tabellenname (Name) Values (%s);',[QuotedStr(temp)]));
      // Jeweils 1000 Namen "am Stück" in die Tabelle einfügen.
      // Statt 1000 ggfls. einen angepassten größeren oder kleineren Wert nehmen.
      if x Mod 1000 do begin
        form1.Query1.SQL.Add('END');
        form1.Query1.ExecSQL;
        form1.Query1.SQL.Clear;
        form1.Query1.SQL.Add('EXECUTE BLOCK BEGIN');
      end;
    end
  until eof(F);
  if form1.Query1.SQL.Count > 1 then begin
    form1.Query1.SQL.Add('END');
    form1.Query1.ExecSQL;
    form1.Query1.SQL.Clear;
  end;
  CloseFile(f);

  showmessage('...fertig. ' + inttostr(x) + ' Datensätze');

Geändert von nahpets ( 7. Okt 2017 um 13:07 Uhr) Grund: Text um anderen Ansatz ergänzt
  Mit Zitat antworten Zitat