안녕하세요..!! 하나가 해결되니까..! 다른 하나가 또 생기는군요..!!ㅜ.ㅜ
다름이 아니오라..!! 아래 내용을 mysql DB로 저장을 시키려 하는데...
저장 속도가 너무 느리답니다..!!
물론 아래와 같이 필드가 4개고 데이타가 적을시는 괜찮은거 같은데....
필드도 아래거보다 훨씬 많은 44개 이고(이건 상관없나..?^^)
데이타양이 시간대별로 저장되어있을시 텍스트에(양이 많음(1000건 도 넘는거 같음)
저장속가 엄청느립니다..!!
해결하는 방법좀 가르쳐 주십시요..!
Q/A 찾아보니까..query를 써서 commit을 하라고는 되어있는데...
아직 델파이 초보라서 잘 활용을 못하겠습니다..!!
고수님들의 의견 기다리겠습니다..!!^^
procedure TForm1.Button1Click(Sender: TObject);
var
f : TextFile;
s, s1, s2, s3 : String;
Str_len, Pos1_len, Pos2_len, Pos3_len, Pos4_len, i : Integer;
begin
OpenDialog1.Execute;
if OpenDialog1.FileName <> '' then
begin
Assignfile(F, OpenDialog1.FileName);
reset(F);
while Not eof(F) do
begin
readln(F,S);
Table1.Append;
Table1.Edit;
Str_len := length(S);
Pos1_len := Pos(' ', S)-1;
S1 := Copy(S, Pos1_len+2, Str_len);
Pos2_len := Pos(' ', Copy(S1, 0, Str_len))-1;
S2 := Copy(S1, Pos2_len+2, Str_len);
Pos3_len := Pos(' ', Copy(S2, 0, Str_len))-1;
S3 := Copy(S2,Pos3_len+2,Str_len);
Pos4_len := Pos(' ', Copy(S3, 0, Str_len))-1;
.
.
Table1.FieldByName('a').asString := Copy(S , 0, Pos1_len);
Table1.FieldByName('b').asString := Copy(S1, 0, Pos2_len);
Table1.FieldbyName('c').asString := Copy(S2, 0, Pos3_len);
.
.
Table1.FieldByName('d').AsString := S3;
Table1.Post;
Table1.Next;
end;
closefile(F);
end;
end;
TTable을 사용하시네요? TQuery로 insert문을 사용하세요!! ^^''
글쿠 텍스트파일이 정형화가 되어 있다면 load data infile 문으로 더 빨리 인서트를 할수 있습니다. mysqlimport 유틸리티를 사용해도 되고요..
RDB는 TQuery콤포같은것으로 쿼리를 이용하는것이 속도면이나, 안정성이나 좋습니다.
그럼 이만..
bLue bLood.
Commom wrote:
> 안녕하세요..!! 하나가 해결되니까..! 다른 하나가 또 생기는군요..!!ㅜ.ㅜ
> 다름이 아니오라..!! 아래 내용을 mysql DB로 저장을 시키려 하는데...
> 저장 속도가 너무 느리답니다..!!
> 물론 아래와 같이 필드가 4개고 데이타가 적을시는 괜찮은거 같은데....
> 필드도 아래거보다 훨씬 많은 44개 이고(이건 상관없나..?^^)
> 데이타양이 시간대별로 저장되어있을시 텍스트에(양이 많음(1000건 도 넘는거 같음)
> 저장속가 엄청느립니다..!!
> 해결하는 방법좀 가르쳐 주십시요..!
> Q/A 찾아보니까..query를 써서 commit을 하라고는 되어있는데...
> 아직 델파이 초보라서 잘 활용을 못하겠습니다..!!
> 고수님들의 의견 기다리겠습니다..!!^^
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> f : TextFile;
> s, s1, s2, s3 : String;
> Str_len, Pos1_len, Pos2_len, Pos3_len, Pos4_len, i : Integer;
> begin
> OpenDialog1.Execute;
> if OpenDialog1.FileName <> '' then
> begin
> Assignfile(F, OpenDialog1.FileName);
> reset(F);
>
>
> while Not eof(F) do
> begin
> readln(F,S);
> Table1.Append;
> Table1.Edit;
>
> Str_len := length(S);
> Pos1_len := Pos(' ', S)-1;
>
> S1 := Copy(S, Pos1_len+2, Str_len);
> Pos2_len := Pos(' ', Copy(S1, 0, Str_len))-1;
>
> S2 := Copy(S1, Pos2_len+2, Str_len);
> Pos3_len := Pos(' ', Copy(S2, 0, Str_len))-1;
>
> S3 := Copy(S2,Pos3_len+2,Str_len);
> Pos4_len := Pos(' ', Copy(S3, 0, Str_len))-1;
> .
> .
>
>
> Table1.FieldByName('a').asString := Copy(S , 0, Pos1_len);
> Table1.FieldByName('b').asString := Copy(S1, 0, Pos2_len);
> Table1.FieldbyName('c').asString := Copy(S2, 0, Pos3_len);
> .
> .
> Table1.FieldByName('d').AsString := S3;
> Table1.Post;
> Table1.Next;
> end;
> closefile(F);
> end;
> end;
>