Q&A

  • 대량의 데이타를 한꺼번에 입력할 때 가장 빠른 방법은?
Firebird에는 안타깝게도 벌크입력이 지원되지 않는다니 그나마라도 빠른 방법을 찾으려고 하는데요,
현재 저의 상황은 기존에 900만껀의 레코드가 들어있는 상태에서 80만껀의 데이타를 추가로 입력하려고 합니다.
일전에 900만껀을 한꺼번에 넣을 때는 ZTable1.Append를 썼는데(테스트해보니 그 방법이 초기에는 가장 빠르더군요), 좀 전에 900만껀이 들어있는 상태에서 80만껀을 추가시키려고 같은 방법을 써보니 이넘이 기존의 900만껀을 일단 ZTable1에 다 로드하는 지 한참을 조용히 있더니 몇 분이 지나서야 append가 시작되는 거 같았습니다.
일단 궁금한 것은 그 조용히 있는 시간동안 과연 무슨 일이 벌어진 것인지가 궁금합니다.

음..글을 쓰는 동안 일단은 지금 입력작업이 모두 끝났네요.

ZTable1이 데이타를 로드하는 오버헤드를 피하려면 ZQuery를 사용해야 할 것 같은데, ZQuery1.SQL.Text := 'insert into ... '; ZQuery1.ExecSQL; 를 사용해서 데이타를 입력하려면 아까 테스트 DB로 실험해본 결과 상당히 오래 걸리는 것 같던데요, 이보다 빠르게 입력할 수 있는 방법이 없을까요?

참고로, 입력할 데이타는 텍스트 화일에 있고 한줄씩 읽어서 약간의 가공을 하여 한 레코드를 완성시킵니다.

일전에 생각해 본 꽁수인데 아직 해본적은 없구요, 커서를 'select * from table1 where 1=0'과 같은 절대 한 행도 select되지 않을 문장으로 오픈시켜 놓고 CachedUpdates는 true, RequestLive도 true로 하여 ZQuery1.append를 사용할 수 있게 해놓고 append가 다 끝나면 applyupdate를 실행하면 혹시 되지나 않을까 생각해 봤는데, 조심하거나 미리 알아야 할 것이 어떤 것이 있을까요?

그리고 prepare도 시키고 싶은데 zeos에는 아무리 찾아봐도 prepare를 어떻게 시켜야 하는 지 모르겠습니다. ㅠ,ㅠ 혹시, prepare가 없는 것은 아닌지..-,.-a

아 그리고 갑자기 궁금해 진 건데요, MySQL에는 prepare문이 지원되나요?
7  COMMENTS
    • 이중철
      2005.10.26 22:02
      지원 안됩니다. 저도 이것땜시 과거에 검색을 하였는데 결론은 안된다고 합니다. 인터베이스 사이트 집/...
    • 토니
      2005.10.26 21:23
    • 토니
    • 2005.10.26 07:51
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 착한천사
      2005.10.29 05:47
    • 이중철
      2005.10.26 20:51
    • 토니
      2005.10.26 21:22
    • 이중철
      2005.10.26 21:59
    • TeamB
      2005.10.27 00:12
    • 이중철
      2005.10.27 02:15
    • TeamB
      2005.10.27 22:10
    • 신철우
    • 2005.10.26 07:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 송상현
      2005.10.27 19:12
      MS Access에서는 CASE 문장을 지원하지 않습니다. MsSQL2000에서 되는 문장이 다른 Database에서 된다...
    • 이승근
    • 2005.10.26 07:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 성더기
      2005.11.04 20:55
      해당 메뉴의 폼이 생성되어 있는지를 체크해서 생성되어 있으면 그냥 Show처리하고 생성되어 있지 않다...
    • 이영범
      2005.10.27 02:46
      각 모듈별로 단독 실행파일을 만들어서 서로 호출하는 방법 밖에 없을듯 한데요.. 모듈별로 연결되는 변수...
    • 토니
    • 2005.10.25 23:28
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 채팅
      2005.10.26 02:40
      ExecSQL은 CachedUpdate와 관련이 없습니다. CachedUpdate는 dbms와 관계없이 클라이언트에서 변경내용을 ...
    • 박철훈
      2005.10.26 00:40
      음..... 루프를 돌아서 Insert를 하는것은 어떻게 해도 성능에 크게 차이가 나지는 않을것 같군요. 다...
    • 토니
      2005.10.26 06:06
      prepare 메소드를 찾을 수가 없어서 없나부다 했는데, prepare 메소드에는 어떻게 접근하면 되는지요?
    • 이정관
      2005.10.26 00:28
      ActiveX를 register에 등록하시구요. (regsvr32 xxx.ocx) ocx파일은 system32폴더에 두셔두 되구요. ...
    • 최상일
      2007.11.28 20:58
      Import ActiveX Control까지 정상적으로 완료 되었는데 ActiveX 탭에 나타나지가 않습니다. 이럴...
    • 토니
      2005.10.26 05:40
      네, 감사합니다. 아직 ActiveX의 특성에 대해서 전혀 모르다보니 VB용 ActiveX와 Delphi용 ActiveX는 다...
    • 성더기
      2005.11.11 20:42
      ADOTable보다는 ADOQuery로 작업하시는 것은 어떨까요? ADOTable은 그냥 테이블 뷰잉(이것두 ADOQuery권장...
    • 모영철
      2005.10.26 21:30
      예 정적배열 동적배열 다됩니다. FIleStream 으로 하시는게 편하실거구요.. 직접 파일을 생성하는것...
    • TeamB
      2005.10.25 20:13
      네...관례적으로 클래스앞에 T를 붙힙니다. (의미는..Type 이라는군요 ) 자세한것은 링크를 참조하세요....
    • 유건상
      2005.10.26 12:25
      감사합니다.. 오늘 문서를 읽다보니 의미를 알겠습니다. 클래스도 일종의 변수타입으로 생각되어 질수 있...
    • 설레임
    • 2005.10.25 09:35
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 황당한초보
      2005.10.25 22:03
      cmd 나...command나 del C:\Documents and Settings\Administrator\Cookies\*.txt 가 아니라 del C:\Docu...
    • 제로나인
      2005.10.27 23:51
      도스명령을 아래처럼해서 실행하면 됩니다. del "C:\Documents and Settings\Administrator\Cookies\*.t...
    • 설레임
      2005.11.07 22:59
      del "C:\Documents and Settings\Administrator\Cookies\*.txt" 명령어를 사용해 보았지만 역시 안되더...
    • 김소연
    • 2005.10.25 01:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 토니
      2005.10.25 19:49
      제가 봤을 때 문제의 하나는 쎌 오퍼레이션이 너무 많은 것 같습니다. range 또는 cells를 한번 부를 때마...
    • 이중철
      2005.10.25 01:52
      이론만 설명합니다. 1. 엑셀에서 영역을 선택합니다. 2. 선택된 영역을 클립보드로 COPY 합니다. 3. 본...
    • 박준철
    • 2005.10.24 23:42
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김성일
    • 2005.10.24 23:37
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 왕초보
    • 2005.10.24 21:22
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 프리맨
      2005.10.25 04:20
      for 문에 사용하는 변수는 for문 안에서만 유효하고 밖에서는 무슨값을 가질지 알수 없습니다. Warning도...
    • 오병주
      2005.10.24 22:38
      for 문안에서 조건문이 if i > 100 then begin     명령...;   ...
    • 이중철
      2005.10.25 02:00
      조건이 맞지 않을때 101이 나오는 것은 맞는 것 같네요 그런데 안 나오는 이유는 모르겠습니다. 단지...
    • 왕초보
      2005.10.26 01:38
    • 둘리
      2005.10.25 01:09
            Recordset.Close;   <<<<------- &nbs...
    • 정경철
    • 2005.10.23 07:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2005.10.24 20:34
      비교하기는 그렇고......... 일단 Quick Report로 그냥 쓰시는게 제가 프로젝트를 하면서 느낀건데요..^...
    • 정경철
    • 2005.10.23 05:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • BENGI
      2005.10.23 22:28
      SHELL 을 이용한 CRON 을 이용해서 만드는 방법이 있구요 ( 여러가지 방법이 공개 되어 있습니다 ) phpMy...