Hallo
@Perlsau
Nach der Neuinstallation der IBX Komponenten, habe ich jetzt die IBScript Komponente zur Verfügung. Und damit folgende Lösung erbastelt.
Delphi-Quellcode:
procedure TForm1.LadezielsqlClick(Sender: TObject);
var
startzeit,
stopzeit : TDateTime;
i:Integer;
begin
startzeit :=Now;
ibdb1.Open;
IBScript.Script.LoadFromFile('ziel.sql');
IBScript.ExecuteScript;
IBTransaction1.Commit;
stopzeit :=Now;
Panel1.Caption :='SuchZeit : '+ FormatDateTime('nn:ss:zzz', StopZeit - StartZeit) ;
end;
Um meine 100.000 Datensätze einzulesen, brauche ich jetzt ca. 2,5 Minuten. IBExpert brauchte 3 Minuten.
Nochmals external Tabellen:
Nach langen Herumprobieren hab ich die Lösung:
Falsch ist:
Delphi-Quellcode:
procedure TForm1.btn3Click(Sender: TObject);
begin
with IBQuery1
do
begin
Active:=False;
sql.Clear;
sql.Text := '
Create TABLE dat_ext external file''
c:\externalTables\Tabelle2.txt''
(feld001 varchar(50), FELD002 VARCHAR(250), crlf char(2) )';
Active:=true;
IBTransaction1.Commit;
end;
end;
Richtig ist:
Delphi-Quellcode:
procedure TForm1.btn3Click(Sender: TObject);
begin
with IBQuery1
do
begin
Active:=False;
sql.Clear;
sql.Text := '
Create TABLE dat_ext external file''
c:\externalTables\Tabelle2.txt''
(feld001 char(50), FELD002 CHAR(250), crlf char(2) )';
Active:=true;
IBTransaction1.Commit;
end;
end;
Der Unterschied: char statt varchar.
Zeitliche Verbesserung des Datenimports: SQLScript : 2,5 Minuten, ExternalTabelle : weniger als 5 Sekunden.
Dank an Borwin der das schon in #3 erkannt hat.
Dennoch, auf diese Art und Weise habe ich eine weitere Importmöglichkeit, InsertScript, in Erstellung und Nutzung kennengelernt.
Danke Perlsau.