박태성 님이 쓰신 글 :
: A, B 2개의 DB가 거의 같은 테이블을 가지고 있습니다.(테이블의 트리거 내용이 조금 다른 것 빼고는 똑같다고 봐도 무방함)
:
: A DB의 테이블에는 데이타가 들어 있고 B DB에는 내용이 없는 빈 테이블들입니다.
:
: 이 때 A DB의 테이블 데이타를 B DB의 해당 테이블로 옮기고 싶습니다. ( FireBird 2.1 버전을 사용중입니다)
:
: 델파이를 이용해
: qrySource.Sql.Text := 'select * from aaa';
: qrySource.Open;
: while Not qrySoruce.Eof do
: begin
: qryTarget.Sql.Text := 'insert aaa values(:a, :b, :c....)';
: qryTarget.Params[0].asString := qrySource.Fields[0].asString;
: qryTarget.Params[1].asString := qrySource.Fields[1].asString;
: ....
: qrySource.Next;
: end;
:
: 이런식으로 할까 구상중인데 테이블수도 많고 각 테이블에 필드도 많아서 이렇게 일일이 퀴리문을 작성하는게
: 비효율적일것 같아서 질문드립니다.
:
: 좀 더 편하게 데이타를 옮길수 있는 방법이 없을까요?
:
안녕하세요. 샤프가이리키 입니다.
---------------------------------------------------------------------------
-- 다음은 시스템 테이블에서 테이블명을 가져오는 구문 입니다.
select RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG = 0
---------------------------------------------------------------------------
-- 다음은 시스템 테이블에서 컬럼명을 가져오는 구문 입니다.
SELECT
RDB$FIELD_NAME
FROM
RDB$RELATIONS REL
JOIN RDB$RELATION_FIELDS REL_FIELD
ON REL_FIELD.RDB$RELATION_NAME = REL.RDB$RELATION_NAME
WHERE
REL.RDB$RELATION_NAME = '테이블 이름'
ORDER BY
REL_FIELD.RDB$FIELD_POSITION
---------------------------------------------------------------------------
위와 같이 시스템 테이블을 이용하여 동적으로 쿼리를 만들어서 처리 하심이 어떠신지요.
|