hallo leute,
ich moechte mich mal an die profis hier wenden und frag ob und wie ich das schreiben in die
db schneller machen kann, dazu hier erstmal der quellcode:
Delphi-Quellcode:
if DM.ZCONDATA.Connected=false then DM.ZCONDATA.Connect;
// schreiben der asset_data
DM.ZQ.SQL.Clear;
dm.ZQ.SQL.Add('INSERT INTO ASSET_DATA');
dm.ZQ.SQL.Add('(ASSET_ID'); //a
dm.ZQ.SQL.Add(',GEO_ID'); //b
dm.ZQ.SQL.Add(',DATA)'); //c
dm.ZQ.SQL.Add('values');
dm.ZQ.SQL.Add('(:a,:b,:c);');
dm.ZQ.ParamByName('a').AsInteger:=caid;
dm.ZQ.ParamByName('b').AsInteger:=0; }
lasset:=Tstringlist.Create;
AssignFile(tempfile,OpeniDLG.FileName);
Reset(tempFile);
While not EOF(tempFile) do
begin
c:=c+1;
ReadLN(tempFile,tempString);
if c=1 then
begin
if (firstline) then
begin
dm.ZQ.ParamByName('c').AsString:=tempstring;
dm.ZQ.ExecSQL;
end;
end
else if c>1 then
begin
dm.ZQ.ParamByName('c').AsString:=tempstring;
dm.ZQ.ExecSQL;
end;
bkrehab_fprogress.pb_progress.Position:=filepos(tempfile);
bkrehab_fprogress.Panel2.Repaint;
lasset.Append(tempstring)
end;
dm.ZQ.SQL.Clear;
dm.zq.SQL.add('commit retain;');
dm.ZQ.ExecSQL;
in der while schleife lege ich den parameter c immer neu fest und schreibe per execsql in die
db, nach schleifendurchlauf dann commit...
nun dauert das ganze bei ca. 6500 datensaetzen doch recht lange... ich hab mal was gelesen dass stored procedures schneller sind ... aber wie macht man sowas, geht das mit zeos... ist es ratsam? ich habe ja keine erfahrung damit... oder gibts andere moeglichkeiten die geschwindigkeit zu verbessern?