Q&A

  • 텍스트(txt) 화일을 읽어서 db에 저장할려고 합니다. 어떻게 해야하나요
텍스트(txt) 화일을 읽어서 db에 저장할려고 합니다.

현재 txt 화일에는

1|M110600823|최수현|

2|M110600026|이병희|

3|M110601823|김래선|

4|M110601825|최충섭|

5|M110601827|95050612|

6|M110601828|손준태|

7|M110601830|성학선|

이런 식으로 자료가 들어가 있습니다.

어떻게 하나씩 불려들여 DB에 각 필드별로 저장할수 있을까요

방법좀 알려주세요

소스가 있으시면 부탁드립니다.



3  COMMENTS
  • Profile
    최재봉 2001.08.08 03:30
    AAA AAAA 000-000-0000 AAAAAA-AAA AA AAAAAA

    BBB BBBB 111-111-1111 BBBBBB-BBB BB BBBBBB

    CCC CCCC 222-222-2222 CCCCCC-CCC CC CCCCCC



    procedure TForm2.Button1Click(Sender: TObject);

    var

    fText : TextFile;

    strTemp : String;

    Qry : String;

    strName , strTelNo, strAddress : String;

    nIndex : Integer;

    begin

    AssignFile(fText,'C:ForbongprojectTextInputtemp.txt');

    Reset(fText);

    While not eof(fText) do

    begin

    Readln(fText,strTemp);

    nIndex := 1;

    strName := copy(strTemp,nIndex,13); nIndex := nIndex + 13;

    strTelNo := copy(strTemp,nIndex,14); nIndex := nIndex + 14;

    strAddress := copy(strTemp,nIndex,20);

    Qry := 'Insert into ABOUTME(NAME,TELNO,ADDRESS)';

    Qry := Qry + ' Values(' + QuotedStr(strName) + ',' + QuotedStr(strTelno) + ',' +

    QuotedStr(strAddress) + ')';

    with Query2 do

    begin

    Close;

    SQL.Clear;

    SQL.Add(QRY);

    ExecSQL;

    end;

    end;

    end;



    돕게 되서 기쁩니다.



  • Profile
    블랙봉 2001.05.16 04:13
    김아성 wrote:

    > 텍스트(txt) 화일을 읽어서 db에 저장할려고 합니다.

    > 현재 txt 화일에는

    > 1|M110600823|최수현|

    > 2|M110600026|이병희|

    > 3|M110601823|김래선|

    > 4|M110601825|최충섭|

    > 5|M110601827|95050612|

    > 6|M110601828|손준태|

    > 7|M110601830|성학선|

    > 이런 식으로 자료가 들어가 있습니다.

    > 어떻게 하나씩 불려들여 DB에 각 필드별로 저장할수 있을까요

    > 방법좀 알려주세요

    > 소스가 있으시면 부탁드립니다.

    >



    여기에 사용하실 수 있을지 모르겠지만... 형식이 정해진 파일을 읽어 들이는 방법은

    blockread를 사용할 수 있을 것도 같네요.



    type

    Taaa = record

    sz1 : char; <-- 첫숫자를 위한 것.

    szd1 : char; <-- 첫번째 | 를 위한것

    sz2 : array[1..10] of char; <-- 10자리 숫자를 위한 것

    szd2 : array[1..3] of char; <-- 두번째 |와 엔터키를 위한 것..

    end;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    aaa : Taaa;

    FromF: file;

    NumRead: Integer;

    begin

    Memo1.Clear;

    Memo2.Clear;



    AssignFile(FromF, 'c:aaa.txt');

    Reset(FromF, 1); { Record size = 1 }

    BlockRead(FromF, aaa, sizeof(aaa), NumRead);

    repeat

    Memo1.Lines.Add(aaa.sz1);

    Memo2.Lines.Add(aaa.sz2);

    BlockRead(FromF, aaa, sizeof(aaa), NumRead);

    until (NumRead = 0);

    CloseFile(FromF);

    end;



    전 이렇게 해봤는데요.... 파일의 형식은 다음과 같습니다.



    1|0000000001|

    2|0000000002|

    3|0000000003|



    길이가 고정 되어 있을 경우이고 마지막 레코드에도 엔터키가 들어있을 경우입니다.

  • Profile
    하기 2001.05.16 01:09
    아래의 것에 대한 OutPut이라면 반대로 생각하시면 될것같군요...

    '|'는 필드의 구분이였으니까.... 필드는 3개가 될것이고요...

    연이여 나오지 않았다면... Text의 한줄씩을 읽어서...

    첫번째 필드와 두번째 필드는 Size가 같은것 같은데... 그렇다면

    첫번째 필드는 Size가 1이고 두번째 필드는Size가 10인것 같군요...

    나머지 하나의 필드는 전체 [한줄의 길이 - (1+10+3)]이렇게 하면 될것같은데...

    여기서 3은 '|'를 제외해 주기 위한것이고요...

    Copy명령으로 문자열을 자르셔도 될것같은데....

    설명이 어려운가요? 잠시 생각해 보시면 될것 같기도 한데요... ^^;





    김아성 wrote:

    > 텍스트(txt) 화일을 읽어서 db에 저장할려고 합니다.

    > 현재 txt 화일에는

    > 1|M110600823|최수현|

    > 2|M110600026|이병희|

    > 3|M110601823|김래선|

    > 4|M110601825|최충섭|

    > 5|M110601827|95050612|

    > 6|M110601828|손준태|

    > 7|M110601830|성학선|

    > 이런 식으로 자료가 들어가 있습니다.

    > 어떻게 하나씩 불려들여 DB에 각 필드별로 저장할수 있을까요

    > 방법좀 알려주세요

    > 소스가 있으시면 부탁드립니다.

    >