Q&A

  • 엑셀데이타를 디비에 넣을때..속도를 빠르게하려면?
엑셀데이타를 디비에 insert하려고 합니다.

엑셀데이타를 프로그램창에 한번 보여준후
디비에 넣지 않을 row를 체크한 후, 자료를 수정하고..
체크된 row를 제외한 모든 row를 최종 디비에 insert 해야 합니다.

현제 제가 구현한 방법은..

엑셀데이타만으로 필드가 구성된 템프테이블을 만들고,
그 템프테이블에 다 넣습니다.
우선 그 테이블안에 잇는 내용을 dbgird로 프로그램창에서 보여준 후
수정및 체크를 하고..
그 템프테이블에 잇는 내용을 원래 최종 디비에 넣습니다..
(최종디비에는 엑셀테이타뿐아니라 다른 필드들도 포함되어잇습니다.)

그 과정에..
엑셀데이타을 템프 테이블에 insert하고
dbgrid에 보여지기까지 시간이 너무 걸립니다.
2,500건에 4분이 걸리니까요.

1. 엑셀데이타를 디비로 insert를 할때..속도를 줄일수 잇는 방법을..알고싶습니다.

2. 엑셀파일을 바로 폼에 보이기가 어려워 저런 방법을 썻는데.
   좋은방법좀 알려주세요.
   엑셀파일이 수정가능하게요..

답변부탁드릴게요.
3  COMMENTS
  • Profile
    성더기 2003.08.26 03:10
    둘다가 데이터 베이스니깐
    insert into..
    select 구문을 써보시죠

    이런식으로요
    inser into table (fld1, fld2)
    select (fld1, fld2)


    insert 되는 필드와 select되는 필드의 갯수, 타입은 동일 해야합니다
  • Profile
    별볼일없는 2003.08.22 01:18

    왜 바로 폼에 보이기가 어렵다는지 모르겠네요
    DBgrid를 써서 그런가요?
    stringgrid를 한번 써보시죠
    그런 엑셀 데이터를 db에 저장할 필요가 없을거 같은데요
    stringgrid에 뿌려진 데이터만 최종 db에 저장하면 될거 같네요

    참고
    stringgrid 보다는 StringAlignGrid를 쓰는게 쉽습니다(row 추가,삭제가...)

    저같은 경우에는 엑셀 데이터 받을때 advstringgrid 란걸 쓰는데
    AdvStringGrid1.LoadFromXLS(OpenDialog1.FileName) ;
    요것만 쓰면 되거든요 (몇가지 제약조건이 있지만...)
  • Profile
    김은경 2003.08.22 02:37


    답변감사합니다..
    처음엔 엑셀자체를 폼에 보일려고햇는데..
    잘되지않더군여..
    StringGrid 를 생각안한건아니지만..
    많은양의 건수를 담고잇으면.좋지않다는 말을 들어서
    그러케 한거거덩여~

    근데  StringAlignGrid 나 AdvStringGrid 는 델파이5.0에는 엄는건가여?
    지금 해볼라햇는데..못 찾겟네여.