Q&A

  • 급] 다시한번! txt파일을 DB에..
다시 글을 올립니다.

txt 파일을 db에 저장시킬려고 합니다

txt 파일을 한줄씩 저장할뿐만 아니라 그 한줄을 여러개의 필드로 나누어서 저장할려고 합니다.

혹시 아시면 저한테 메일을 주십시오.

부탁드립니다.꾸벅~~





txt 파일의 예

1 홍길동 관악구 남현동 525-5625



이런식으로 되어있는 txt 파일을 말씀드리는 거죠..

2  COMMENTS
  • Profile
    구창민 1999.09.10 03:34
    jerry 께서 말씀하시기를...

    > 다시 글을 올립니다.

    > txt 파일을 db에 저장시킬려고 합니다

    > txt 파일을 한줄씩 저장할뿐만 아니라 그 한줄을 여러개의 필드로 나누어서 저장할려고 합니다.

    > 혹시 아시면 저한테 메일을 주십시오.

    > 부탁드립니다.꾸벅~~

    >

    >

    > txt 파일의 예

    > 1 홍길동 관악구 남현동 525-5625

    >

    > 이런식으로 되어있는 txt 파일을 말씀드리는 거죠..







    jerry 님 아래 코드 한번 사용해 보세요.

    그럼.. 즐거운 프로그래밍 되시구요~~



    procedure BackupTableToCSV(tableName:TTable);



    var

    i,j: integer; (*i-field, j-record*)

    s: string; (*Record string*)

    theStringList: Tstringlist; (*temp storage*)



    begin

    s:='';

    theStringList:=TStringList.Create;

    with tableName do

    begin

    try

    Active:=True;

    except

    showmessage('Could not activate '+ Name);

    end;

    for j:=0 to (RecordCount-1) do

    begin

    s:='';

    for i:=1 to (FieldCount-1) do

    begin

    (*add next field w/comma delimiter*)

    s:=s+(Fields[i].AsString)+',';

    end; (*i for*)

    theStringList.add(s);

    Next;

    end; (*i for*)

    theStringList.savetofile(Name+'.csv'); (*memo1.lines.*)

    Showmessage(Name+ ' has been backed up.');

    close;

    end; (*with*)

    end; (*BackupTableToCSV*)



    From--Jack Darby [jdlink@eden.com], Electronic Data Systems/Austin



  • Profile
    이주흥 1999.09.10 02:45
    jerry 께서 말씀하시기를...

    > 다시 글을 올립니다.

    > txt 파일을 db에 저장시킬려고 합니다

    > txt 파일을 한줄씩 저장할뿐만 아니라 그 한줄을 여러개의 필드로 나누어서 저장할려고 합니다.

    > 혹시 아시면 저한테 메일을 주십시오.

    > 부탁드립니다.꾸벅~~

    >

    >

    > txt 파일의 예

    > 1 홍길동 관악구 남현동 525-5625

    >

    > 이런식으로 되어있는 txt 파일을 말씀드리는 거죠..



    먼저 필드에 저장할 내용을 사이즈별로 읽어와야 합니다.

    읽은내용을 저장할 변수를 배열로 정의하세요..

    그리고 For문을 돌려 파일에서 읽어와서 변수에 저장합니다..

    그리고 쿼리로 삽입을 하면 됩니다..

    예를 들어드리죠...



    //유닛의 public에 str이라는 배열을 둡니다.여기서 X는 레코드의 수만큼입니다.

    public

    { Public declarations }

    FileHandle : TextFile;

    str : array[0..X] of string;



    procedure TForm1.Button1Click(Sender: TObject);

    var

    i : Integer;

    s1,s2,s3,s4,s5,s6,s7: String;//필드수 만큼 변수를 둡니다..

    begin

    AssignFile(FileHandle,'읽을 텍스트 파일이름');

    reset(FileHandle);



    for i := 1 to X do begin //X도 마찬가지로 레코드 갯숩니다..

    readln(FileHandle,str[i]);//파일의 한줄을 읽어서 str[i]에 담습니다...





    s1 := copy(str[i],1,7);//저장된 내용에서 필요한 문자열만큼 끊어서

    변수에 저장합니다...

    s2 := copy(str[i],8,10);

    s3 := copy(str[i],18,7);

    s4 := copy(str[i],25,7);

    s5 := copy(str[i],32,13);

    s6 := copy(str[i],49,1);

    s7 := copy(str[i],50,1);



    //여기서부터는 퀄리를 써서 테이블에 삽입시키면 됩니다.

    위의 S1,S2....를 파라메터로써서

    query1.parambyname('필드명').타입 := S1;

    .

    .

    .



    이정도면 이해가 가시리라 믿습니다..

    그럼 부디 성공하시길....