Q&A

  • 오라클디비를 파라독스로 백업하기 소스 보아주세요
저의 방법 입니다.

아주 기초적인 방법일 것인데... 보다 고차원 적인 기법이 있으면 알려주십시요.



단점이 아주 많습니다.

1.C:아래 원하는 디렉토리에 오라클과 똑같은 디비를 사전에 만들어 놓아야 합니다.

2.그러구 코딩시 일일이 아래처럼 필드명을 적어주고 파라미터를 주어야 합니다.

3.디비가 한두개이면 저렇게 코딩 해주어도 별 문제이나 불행히도 오라클디비의 테이블

수는 프로젝트하나에 약 30여개 입니다. 그러면 아래구문을 30번 이나 써 주어야

합니다. 무식한 방법이죠?

4.행여 오라클디비의 필드명을 수정이라도 하면 백업프로그램도 똑같이 수정 해 주어야

합니다. 어이구 단점투성이네...



그래서 만들다가 보다 고차원적인 방법을 찾으려 중단 상태입니다.



아래는 소스입니다.





//백업을 주기적으로 하므로 기존 데이타는 삭제를 합니다

with SQLtra do begin

close;

sql.clear;

sql.add('delete from testdb');

EXECsql;

end;



with SQLtest do begin

close;

sql.clear;

sql.add('select * from testdb');

SQL.Add('where mj_suno is not null');

open;

ProgressBar1.max := recordcount;

while not eof do begin

ProgressBar1.Position := ProgressBar1.Position + sizeof(1);

with SQLtest2 do begin

close;

sql.clear;

sql.add('Insert into testdb');

sql.add('(ms_keys,ms_sply,ms_saup,ms_name,ms_juso1,ms_juso2,ms_phon,ms_faxi,');

sql.add(' ms_post,ms_upte,ms_jong,ms_gydt,ms_stdt,ms_endt,ms_jigb,ms_bnk1,ms_rat1,ms_bnk2,');

sql.add(' ms_rat2,ms_bnk3,ms_rat3,ms_dday,ms_desc,ms_chek,ms_segm,ms_kubn)');

sql.Add('Values');

sql.add('(:p_keys,:p_sply,:p_saup,:p_name,:p_juso1,:p_juso2,:p_phon,:p_faxi,');

sql.add(' :p_post,:p_upte,:p_jong,:p_gydt,:p_stdt,:p_endt,:p_jigb,:p_bnk1,:p_rat1,:p_bnk2,');

sql.add(' :p_rat2,:p_bnk3,:p_rat3,:p_dday,:p_desc,:p_chek,:p_segm,:p_kubn)');

parambyname('p_keys').asstring := SQLtraffic.fieldbyname('ms_keys').asstring;

parambyname('p_sply').asstring := SQLtraffic.fieldbyname('ms_sply').asstring;

parambyname('p_kubn').asstring := SQLtraffic.fieldbyname('ms_kubn').asstring;

parambyname('p_saup').asstring := SQLtraffic.fieldbyname('ms_saup').asstring;

parambyname('p_name').asstring := SQLtraffic.fieldbyname('ms_name').asstring;

parambyname('p_juso1').asstring :=SQLtraffic.fieldbyname('ms_juso1').asstring;

parambyname('p_juso2').asstring :=SQLtraffic.fieldbyname('ms_juso2').asstring;

parambyname('p_phon').asstring := SQLtraffic.fieldbyname('ms_phon').asstring;

parambyname('p_faxi').asstring := SQLtraffic.fieldbyname('ms_faxi').asstring;

parambyname('p_post').asstring := SQLtraffic.fieldbyname('ms_post').asstring;

parambyname('p_upte').asstring := SQLtraffic.fieldbyname('ms_upte').asstring;

parambyname('p_jong').asstring := SQLtraffic.fieldbyname('ms_jong').asstring;

parambyname('p_gydt').asstring := SQLtraffic.fieldbyname('ms_gydt').asstring;

parambyname('p_stdt').asstring := SQLtraffic.fieldbyname('ms_stdt').asstring;

parambyname('p_endt').asstring := SQLtraffic.fieldbyname('ms_endt').asstring;

parambyname('p_jigb').asstring := SQLtraffic.fieldbyname('ms_jigb').asstring;

parambyname('p_bnk1').asstring := SQLtraffic.fieldbyname('ms_bnk1').asstring;

parambyname('p_rat1').asstring := SQLtraffic.fieldbyname('ms_rat1').asstring;

parambyname('p_bnk2').asstring := SQLtraffic.fieldbyname('ms_bnk2').asstring;

parambyname('p_rat2').asstring := SQLtraffic.fieldbyname('ms_rat2').asstring;

parambyname('p_bnk3').asstring := SQLtraffic.fieldbyname('ms_bnk3').asstring;

parambyname('p_rat3').asstring := SQLtraffic.fieldbyname('ms_rat3').asstring;

parambyname('p_dday').asstring := SQLtraffic.fieldbyname('ms_dday').asstring;

parambyname('p_desc').asstring := SQLtraffic.fieldbyname('ms_desc').asstring;

parambyname('p_chek').asstring := SQLtraffic.fieldbyname('ms_chek').asstring;

parambyname('p_segm').asstring := SQLtraffic.fieldbyname('ms_segm').asstring;

EXECSQL;

end;

Next;

end;

end;



제가 구현하고 싶은 방법은요

1. C:아래에도 오라클디비와 똑같이 파라독스 디비를 사전에 만들지 않고...

2. 위구문처럼 필드명을 일일이 적어주지 않고, 파라미터도 일일이 적어주지않고...

그러면 오라클디비를 수정해도 백업프로그램은 수정하지 않아도 되겠죠..



고수님들 새로운 고차원적인 기법좀 알려주십시요... 감사합니다.

1  COMMENTS
  • Profile
    왕초보 2001.06.30 21:06
    제 생각입니다만...

    UpdateSQL 콤포넌트를 써보심이 어떠하신지...^^;;

    그럼...즐코되세욤...



    초보 wrote:

    > 저의 방법 입니다.

    > 아주 기초적인 방법일 것인데... 보다 고차원 적인 기법이 있으면 알려주십시요.

    >

    > 단점이 아주 많습니다.

    > 1.C:아래 원하는 디렉토리에 오라클과 똑같은 디비를 사전에 만들어 놓아야 합니다.

    > 2.그러구 코딩시 일일이 아래처럼 필드명을 적어주고 파라미터를 주어야 합니다.

    > 3.디비가 한두개이면 저렇게 코딩 해주어도 별 문제이나 불행히도 오라클디비의 테이블

    > 수는 프로젝트하나에 약 30여개 입니다. 그러면 아래구문을 30번 이나 써 주어야

    > 합니다. 무식한 방법이죠?

    > 4.행여 오라클디비의 필드명을 수정이라도 하면 백업프로그램도 똑같이 수정 해 주어야

    > 합니다. 어이구 단점투성이네...

    >

    > 그래서 만들다가 보다 고차원적인 방법을 찾으려 중단 상태입니다.

    >

    > 아래는 소스입니다.

    >

    >

    > //백업을 주기적으로 하므로 기존 데이타는 삭제를 합니다

    > with SQLtra do begin

    > close;

    > sql.clear;

    > sql.add('delete from testdb');

    > EXECsql;

    > end;

    >

    > with SQLtest do begin

    > close;

    > sql.clear;

    > sql.add('select * from testdb');

    > SQL.Add('where mj_suno is not null');

    > open;

    > ProgressBar1.max := recordcount;

    > while not eof do begin

    > ProgressBar1.Position := ProgressBar1.Position + sizeof(1);

    > with SQLtest2 do begin

    > close;

    > sql.clear;

    > sql.add('Insert into testdb');

    > sql.add('(ms_keys,ms_sply,ms_saup,ms_name,ms_juso1,ms_juso2,ms_phon,ms_faxi,');

    > sql.add(' ms_post,ms_upte,ms_jong,ms_gydt,ms_stdt,ms_endt,ms_jigb,ms_bnk1,ms_rat1,ms_bnk2,');

    > sql.add(' ms_rat2,ms_bnk3,ms_rat3,ms_dday,ms_desc,ms_chek,ms_segm,ms_kubn)');

    > sql.Add('Values');

    > sql.add('(:p_keys,:p_sply,:p_saup,:p_name,:p_juso1,:p_juso2,:p_phon,:p_faxi,');

    > sql.add(' :p_post,:p_upte,:p_jong,:p_gydt,:p_stdt,:p_endt,:p_jigb,:p_bnk1,:p_rat1,:p_bnk2,');

    > sql.add(' :p_rat2,:p_bnk3,:p_rat3,:p_dday,:p_desc,:p_chek,:p_segm,:p_kubn)');

    > parambyname('p_keys').asstring := SQLtraffic.fieldbyname('ms_keys').asstring;

    > parambyname('p_sply').asstring := SQLtraffic.fieldbyname('ms_sply').asstring;

    > parambyname('p_kubn').asstring := SQLtraffic.fieldbyname('ms_kubn').asstring;

    > parambyname('p_saup').asstring := SQLtraffic.fieldbyname('ms_saup').asstring;

    > parambyname('p_name').asstring := SQLtraffic.fieldbyname('ms_name').asstring;

    > parambyname('p_juso1').asstring :=SQLtraffic.fieldbyname('ms_juso1').asstring;

    > parambyname('p_juso2').asstring :=SQLtraffic.fieldbyname('ms_juso2').asstring;

    > parambyname('p_phon').asstring := SQLtraffic.fieldbyname('ms_phon').asstring;

    > parambyname('p_faxi').asstring := SQLtraffic.fieldbyname('ms_faxi').asstring;

    > parambyname('p_post').asstring := SQLtraffic.fieldbyname('ms_post').asstring;

    > parambyname('p_upte').asstring := SQLtraffic.fieldbyname('ms_upte').asstring;

    > parambyname('p_jong').asstring := SQLtraffic.fieldbyname('ms_jong').asstring;

    > parambyname('p_gydt').asstring := SQLtraffic.fieldbyname('ms_gydt').asstring;

    > parambyname('p_stdt').asstring := SQLtraffic.fieldbyname('ms_stdt').asstring;

    > parambyname('p_endt').asstring := SQLtraffic.fieldbyname('ms_endt').asstring;

    > parambyname('p_jigb').asstring := SQLtraffic.fieldbyname('ms_jigb').asstring;

    > parambyname('p_bnk1').asstring := SQLtraffic.fieldbyname('ms_bnk1').asstring;

    > parambyname('p_rat1').asstring := SQLtraffic.fieldbyname('ms_rat1').asstring;

    > parambyname('p_bnk2').asstring := SQLtraffic.fieldbyname('ms_bnk2').asstring;

    > parambyname('p_rat2').asstring := SQLtraffic.fieldbyname('ms_rat2').asstring;

    > parambyname('p_bnk3').asstring := SQLtraffic.fieldbyname('ms_bnk3').asstring;

    > parambyname('p_rat3').asstring := SQLtraffic.fieldbyname('ms_rat3').asstring;

    > parambyname('p_dday').asstring := SQLtraffic.fieldbyname('ms_dday').asstring;

    > parambyname('p_desc').asstring := SQLtraffic.fieldbyname('ms_desc').asstring;

    > parambyname('p_chek').asstring := SQLtraffic.fieldbyname('ms_chek').asstring;

    > parambyname('p_segm').asstring := SQLtraffic.fieldbyname('ms_segm').asstring;

    > EXECSQL;

    > end;

    > Next;

    > end;

    > end;

    >

    > 제가 구현하고 싶은 방법은요

    > 1. C:아래에도 오라클디비와 똑같이 파라독스 디비를 사전에 만들지 않고...

    > 2. 위구문처럼 필드명을 일일이 적어주지 않고, 파라미터도 일일이 적어주지않고...

    > 그러면 오라클디비를 수정해도 백업프로그램은 수정하지 않아도 되겠죠..

    >

    > 고수님들 새로운 고차원적인 기법좀 알려주십시요... 감사합니다.