Q&A

  • text파일을 db로 ...




text파일을 한꺼번에 특정 db로 insert하는 방법이 있을까요....

매우 급합니다. 방법 아시는분 부탁드려요

2  COMMENTS
  • Profile
    박성훈 1999.12.23 04:10
    엄화용 wrote:

    >

    >

    > text파일을 한꺼번에 특정 db로 insert하는 방법이 있을까요....

    > 매우 급합니다. 방법 아시는분 부탁드려요



    이건 대림출판사에서 나온 책을 참고한 것입니다.



    Text파일을 TTable컴포넌트를 읽어올 수 있는데, 그러기 위해서는 구조에대한 정보를 가진 스키마파일이 필요합니다.



    //Customer.txt

    1000,"홍길동","123-4567",10000.00



    //Customer.sch(스키마파일)

    [Customer]

    FileType= VARYING

    Delimeter=""

    Seperator=,

    Charset=ascii

    Field1=Custmer No,Number,12,00,00

    Field2=Custmer Name,Char,30,00,20

    Field3=Custmer Tel,Char,12,00,20

    Field4=Custmer Total,Float,10,02,120





    이렇게 스키마파일을 만드신 다음 Text파일을 처리하기위해 앨리어스를 생성합니다.

    앨리어스의 파라미터는 아래와 같습니다.



    TYPE:STANDARD

    PATH: DB를 만들 디렉토리

    DEFAULT DRIVER: ASCIIDRV



    폼에 TTable을 가져다 놓으신 후 속성을 아래와 같이 줍니다.



    DatabaseName:위에서 만드신 앨리어스명

    TableType: ttAscii

    Tablename: Customer

    Active: True



    위의 방법은 아직 안써봐서 어떨지 모르겠습니다.

    만약 텍스트파일이



    1000 홍길순 123-4567 10000

    2000 홍길동 234-5678 25000



    이런식으로 일정한 양식을 가지고 있다면 TextFile변수를 선언해서 DB로 만들 수 있습니다.(이건 제가 쓰는 방법입니다.)

    우선 폼에 TTable을 가져다 놓으셔야 합니다.



    procedure TForm1.MakeTextToDb;

    var

    F:TextFile;

    s:String







    begin

    AssignFile(F,'c:temptest.txt');

    Reset(F);

    While not EOF(F) do begin

    ReadLn(F,S);

    Table1.Append;

    Table1.Fields[0].asString:= Copy(S,1,4);

    Table1.Fields[0].asString:= Copy(S,6,6);

    ...

    Table1.Post;

    end;

    CloseFile(F);

    end;



    이런 형태로 처리를 합니다.



    짧은 실력으로 답변을 드려서 도움이 됐는지 모르겠습니다.

    즐거운 연말되시고 새해 복 많이많이 받으시길 바랍니다.



  • Profile
    이상혁 1999.12.22 04:11
    엄화용 wrote:

    >

    >

    > text파일을 한꺼번에 특정 db로 insert하는 방법이 있을까요....

    > 매우 급합니다. 방법 아시는분 부탁드려요



    편법이지만 제가 쓰고 있는 방법을....

    우선 text file을 excel로 읽습니다. excel로 읽을때 구분자를 두어

    Field 하나가 cell 하나에 들어가도록 해야합니다.

    !!! 주의 해야 할것은 cell내에 data가 가려지면 절대 안됩니다. !!!

    그다음엔 excel를 다른이름으로 저장. 이때, file형식을 dbaseIII나

    dbaseiV로 합니다.



    그리고 나서 delphi의 database desktop을 실행시키고 메뉴의 tools-->

    util --> copy 를 선택하고 위에서 excel에 저장한 file을 선택합니다.

    그러면 어디다 copy 할것인지를 알려주면 됩니다.

    물론 두 table의 field 명은 같아야 겠지요?



    copy 가 다 되었으면 paradox의 db를 open 하고 확인을 하십시오.(제대로