Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Große Datenmengen in Oracle 9i häppchenweise fetchen

  Alt 26. Sep 2004, 16:49
Moin,

um wieviel Datensätze geht es denn hier.

ich habe mal folgendes getestet...

500000 Datensätze ergaben eine CSV-Datei von 26MB und das dauerte 1 Min 10 Sec. (das hängt natürlich von der Rechnergeschwindigkeit ab)

Aber, wenn das so viele Datensätze sind dauert das naturlich auch eine gewisse Zeit.
Mit mehreren Abfragen würde ich das nicht so gut finden, weil dann in der Zwischenzeit Änderungen stattfinden könnten (Mehrbenutzerfähigkeit).

Mach doch einen Prozentbalken, dann sieht der Nutzer das noch was geschieht.

Beispiel mit DBExpress...
Delphi-Quellcode:
procedure TForm.SQLtoCSV(SQL, Dateiname: string; ProgressBar:TProgressBar; SQLConnection:TCRSQLConnection);
var SDS:TSimpleDataSet;
    i:integer;
    Datei:Textfile;
begin
  assignfile(Datei, Dateiname);
  try
    rewrite(Datei);
    SDS:=TSimpleDataSet.Create(Self);
    try
      SDS.Connection:=SQLConnection;
      SDS.DataSet.CommandText:=SQL;
      SDS.Open;
      ProgressBar.Min:=1;
      ProgressBar.Max:=SDS.RecordCount;
      ProgressBar.Step:=1;
      for i:=1 to SDS.FieldCount do begin
        write(Datei, SDS.Fields[i-1].FieldName);
        if i < SDS.FieldCount then
          write(Datei, ';');
      end;
      writeln(Datei);
      while not SDS.Eof do begin
        ProgressBar.StepIt;
        for i:=1 to SDS.FieldCount do begin
          write(Datei, SDS.Fields[i-1].AsString);
          if i < SDS.FieldCount then
            write(Datei, ';');
        end;
        writeln(Datei);
        SDS.Next;
      end;
      SDS.Close;
    finally
      SDS.Free;
    end;
  finally
    closefile(Datei);
  end;
end;

MfG
Thorsten
  Mit Zitat antworten Zitat