Q&A

  • 데이터를 대량으로 옮기는 방법이 있으면 좀 알려주세요.
제가 서로 다른 두 데이터베이스 간에 데이터를 옮기는 프로그램을 짜야하는데 속도가 너무 떨어져서 이렇게 질문을 올립니다.



구체적으로 설명을 드리자면 서로 다른 서버에 있는 다른 데이터베이스 A와 B가 있을때 A의 DB 구조와 B의 DB 구조는 비슷하지만 약간 다릅니다.



여기서 제가 해야하는 작업이 며칠(또는 몇달)간의 데이터를 A에 쌓아둔 후 그걸 B에 옮기고 또 B에 쌓여있는 데이터는 A로 옮기는 작업을 해야합니다.



이것들을 일일이 select 문으로 읽어서 조금 다른 부분을 변환 작업을 해서 다른 DB에 insert 문으로 넣으니 너무 느리더군요.



델파이에 포함되어 있는 datapump 같은 프로그램으로 동일한 테이블 구조에서 데이터를 옮기는 경우 데이터의 양이 많아도 꽤 빨리 옮겨지던데 이건 어떤 방식으로 옮기는건지 궁금합니다.



참고로 말씀드리면 데이터베이스 A는 오라클 7.3 버젼을 사용중이고 데이터베이스 B는 오라클 8.0(?) 버젼을 사용중입니다.



그럼 고수님들의 조언 부탁드립니다.

1  COMMENTS
  • Profile
    지락... 2001.08.28 09:17
    박성우 wrote:

    > 제가 서로 다른 두 데이터베이스 간에 데이터를 옮기는 프로그램을 짜야하는데 속도가 너무 떨어져서 이렇게 질문을 올립니다.

    >

    > 구체적으로 설명을 드리자면 서로 다른 서버에 있는 다른 데이터베이스 A와 B가 있을때 A의 DB 구조와 B의 DB 구조는 비슷하지만 약간 다릅니다.

    >

    > 여기서 제가 해야하는 작업이 며칠(또는 몇달)간의 데이터를 A에 쌓아둔 후 그걸 B에 옮기고 또 B에 쌓여있는 데이터는 A로 옮기는 작업을 해야합니다.

    >

    > 이것들을 일일이 select 문으로 읽어서 조금 다른 부분을 변환 작업을 해서 다른 DB에 insert 문으로 넣으니 너무 느리더군요.

    >

    > 델파이에 포함되어 있는 datapump 같은 프로그램으로 동일한 테이블 구조에서 데이터를 옮기는 경우 데이터의 양이 많아도 꽤 빨리 옮겨지던데 이건 어떤 방식으로 옮기는건지 궁금합니다.

    >

    > 참고로 말씀드리면 데이터베이스 A는 오라클 7.3 버젼을 사용중이고 데이터베이스 B는 오라클 8.0(?) 버젼을 사용중입니다.

    >

    > 그럼 고수님들의 조언 부탁드립니다.

    -------------------------------------------------

    Data Access안의 BatchMove1컴포넌트를 이용해보세요

    사용방법

    BatchMove1.Source:=Query1;//소스테이블

    BatchMove1.Destination:=Table1;//타겟테이블

    With BatchMove1.Mappings do begin

    add('타겟필드1=소스필드1');

    add('타겟필드2=소스필드2');

    add('타겟필드3=소스필드3');

    end;

    BatchMove1.Mode:=batAppend;//이부분 옵션은 알아서 선택해주세요

    BatchMove1.Execute;



    이렇게 하시면 빠르게 될것입니다.