Q&A

  • 텍스트데이터를 SQL SERVER로 이전작업이 너무 느려요...
텍스트 데이터를 db로 옮기고자 하는데....

너무 느려서 도저히 몇 만건의 데이터를 넘길수 없습니다.

아래와 같이 코딩을 했는데요...

고수님들 부탁드립니다....





begin

assignfile(F,'c:dddddd.txt');

reset(F);

i := 0;

while i < 100000 do

begin

readln(F,S);

Table1.Append; Table1.Edit;

Table1.FieldByName('YJI_NO').asInteger := StrtoInt(Copy(S,1,8));

Table1.FieldByName('YJI_YEAR').asString := Copy(S,10,4);

Table1.FieldbyName('YJI_MONTH').asString := Copy(S,15,2);

....

Table1.Post;

Table1.Next;

i := i + 1;

end;

closefile(F);

end;

3  COMMENTS
  • Profile
    지나가다가.. 2001.12.16 02:31
    텍스트 데이터를 DB에 INSERT하는 부분이 문제가 있을겁니다.



    코딩자체가 문제가 아니라



    많은 양의 데이터를 한 건씩 DB에 INSERT하게 되면 무지 오래 걸리게 되져



    예전에 한 100만건 넘게 넣어 본적이 있었는데 포기했음당... 한 3시간정도 후에...



    ㅡ.ㅡ;;



    우선 방법이 있습니다. 아주 쉬운걸루.... ^^



    첫번째는 텍스트 데이터를 ',' 구분자를 갖는 CSV 파일 형식으로 컨버팅 시킵니다.



    그리고 프로그램 상에서 해야 한다면.. 스토어드 프로시저를 작성하셔야 합니다.



    델 프로그래밍 코딩으로는 명령이 안먹더라구염...



    바로 BULK INSERT 명령을 사용하는겁니다.



    대량의 데이터를 SQL 서버로 전송할때 사용합니다.



    도움말은 쿼리 분석기에서 F1눌러서 헬프로 찾아보세염...



    BULK INSERT는 텍스트 파일에서 데이터를 SQL 서버로 전송하기 때문에 텍스트 파일



    형식으로 사용할때 유용하죠... 서버간에 데이터 전송도 됩니다... 그럼...





    헬프미 wrote:

    > 텍스트 데이터를 db로 옮기고자 하는데....

    > 너무 느려서 도저히 몇 만건의 데이터를 넘길수 없습니다.

    > 아래와 같이 코딩을 했는데요...

    > 고수님들 부탁드립니다....

    >

    >

    > begin

    > assignfile(F,'c:dddddd.txt');

    > reset(F);

    > i := 0;

    > while i < 100000 do

    > begin

    > readln(F,S);

    > Table1.Append; Table1.Edit;

    > Table1.FieldByName('YJI_NO').asInteger := StrtoInt(Copy(S,1,8));

    > Table1.FieldByName('YJI_YEAR').asString := Copy(S,10,4);

    > Table1.FieldbyName('YJI_MONTH').asString := Copy(S,15,2);

    > ....

    > Table1.Post;

    > Table1.Next;

    > i := i + 1;

    > end;

    > closefile(F);

    > end;

  • Profile
    깨구락지 2001.12.15 17:23
    그냥 텍스트파일을 이용하거나 엑셀파일로 변환한후

    SQL의 DTS 를 이용해보십시오.



    깨굴~



    헬프미 wrote:

    > 텍스트 데이터를 db로 옮기고자 하는데....

    > 너무 느려서 도저히 몇 만건의 데이터를 넘길수 없습니다.

    > 아래와 같이 코딩을 했는데요...

    > 고수님들 부탁드립니다....

    >

    >

    > begin

    > assignfile(F,'c:dddddd.txt');

    > reset(F);

    > i := 0;

    > while i < 100000 do

    > begin

    > readln(F,S);

    > Table1.Append; Table1.Edit;

    > Table1.FieldByName('YJI_NO').asInteger := StrtoInt(Copy(S,1,8));

    > Table1.FieldByName('YJI_YEAR').asString := Copy(S,10,4);

    > Table1.FieldbyName('YJI_MONTH').asString := Copy(S,15,2);

    > ....

    > Table1.Post;

    > Table1.Next;

    > i := i + 1;

    > end;

    > closefile(F);

    > end;

  • Profile
    헬프미 2001.12.15 20:22
    밑에 소스중 어떤것이 문제인가요...

    텍스트파일을 이용한건데 느리거든요...

    Table1.Post시 오래걸리는데...줄일방법이 없을까요?





    깨구락지 wrote:

    > 그냥 텍스트파일을 이용하거나 엑셀파일로 변환한후

    > SQL의 DTS 를 이용해보십시오.

    >

    > 깨굴~

    >

    > 헬프미 wrote:

    > > 텍스트 데이터를 db로 옮기고자 하는데....

    > > 너무 느려서 도저히 몇 만건의 데이터를 넘길수 없습니다.

    > > 아래와 같이 코딩을 했는데요...

    > > 고수님들 부탁드립니다....

    > >

    > >

    > > begin

    > > assignfile(F,'c:dddddd.txt');

    > > reset(F);

    > > i := 0;

    > > while i < 100000 do

    > > begin

    > > readln(F,S);

    > > Table1.Append; Table1.Edit;

    > > Table1.FieldByName('YJI_NO').asInteger := StrtoInt(Copy(S,1,8));

    > > Table1.FieldByName('YJI_YEAR').asString := Copy(S,10,4);

    > > Table1.FieldbyName('YJI_MONTH').asString := Copy(S,15,2);

    > > ....

    > > Table1.Post;

    > > Table1.Next;

    > > i := i + 1;

    > > end;

    > > closefile(F);

    > > end;