Optymalizacja wczytywania danych w MySQL

0

Chodzi o przyspieszenie wczytywania danych do bazy w MySQL. Stosując poniższy kod przy plikach zawierających 1 mln rekordów trwa to bardzo długo (gdzieś około 8 godzin). Czy jest jakaś inna metoda pozwalająca to przyspieszyć? Może podział na mniejsze pliki? Łączę się z bazą za pomocą ODBC. Może jest inne łącze szybsze?

AssignFile(TextF,'Plik.txt');
Reset(TextF);

for i:=IloscRekordow downto 1 do
begin
Readln(TextF,S);

P := Pos(';', S);
DanaWartosc := Copy(S, 1, P - 1);
Delete(S, 1, P);

ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('INSERT INTO T_KliFiz (Modulo) VALUES ('+ DanaWartosc+')');
ADOQuery.ExecSQL;

Application.ProcessMessages;
end;
0

Dzięki. Faktycznie działa dużo szybciej.
Jescze jedno pytanie. Przenoszę dane z bazy btrieva do mysql. Robię to zrzucając z bazy btrieve do pliku a potem zaczytuję do MySQL z tego pliku. Zrzut do pliku robię tak:

AssignFile(TextOut,'plik.txt');
ReWrite(TextOut);
IloscRekordow:=ADOTblBaza.RecordCount;
ADOTblBaza.First;
for i:=IloscRekordow downto 1 do
  begin
   S:=ADOTblBaza.FieldByName('Dana1').AsString+';';
   S:=S + ADOTblBaza.FieldByName('Dana2').AsString+';';
   S:=S + ADOTblBaza.FieldByName('Dana3').AsString+';';
  Writeln(TextOut,S);
  ADOTblBaza.Next;
  end;
Close(TextOut);

Można to zrobić szybciej? Przy bardzo duzych bazach mocno zmula. I czym jest dalej tym to wolniej wykonuje

1 użytkowników online, w tym zalogowanych: 0, gości: 1