본문 바로가기

ETL Tools/Oracle Data Integrator

[ODI] 단순 쿼리 ETL 작업 개발

주제 단순 Migration 작업 생성(DB to DB)

/* 2014.11.22 천정현 작성 */


설명

 단순 Select Insert 방식으로 구현이 가능한 방법으로 ETL 을 위한 별도 로직을 심거나 수정하기는 어렵지만,(Merge/ Delete insert / Update ..) 데이터를 한번에 넘기거나, 구간을 정의해서 넘길때 유용하게 사용 가능 하다.


구성 방법

 - Source System 에서 Select 부분 변수 처리 [자동 or 수동 생성]

 - Target SystemInsert 부분 변수 처리 [자동 생성]

 - Filter 사용시 수동 설정

 - 프로시저를 통한 작업 수행


사용 코드

 - variable

  1. insert {refresh: select 'insert into -.#table ('||chr(10)||listagg(column_name, chr(10)||', ') within group (order by column_id)||chr(10)||') '||chr(10)||'values ('||chr(10)||listagg(':'||column_name, chr(10)||', ') within group (order by column_id)||chr(10)||') ' from all_tab_columns where table_owner = '-' and table_name = '#table'}

  2. select{refresh: select 'select '||chr(10)||listagg(column_name, chr(10)||', ') within group (order by column_id)||chr(10)||' from #table' from all_tab_columns where table_owner = '-' and table_name = '#table'}

  3. filter: manual 

  4. table: manual

### looping 시 사용 

  5. std_dt: manual

  6. seq: 1++

###

 - procedure - t: #insert / s: #select

 - package

  1. all

   table -> insert -> select -> filter -> procedure(알맞은 서버) 

  2. part looping

   table -> insert -> select -> std_dt -> seq -> (@loop) filter -> procedure -> seq++ -> seq 평가 (@loop)


응용 사항

 - 접속 서버 정보도 변수 처리하여 구현 가능할 것으로 예상되나 테스트가 필요함.

 * 접속 서버 정보: ODI Repository 에서 jdbc URL을 가져온다.

                          현시점까지는 접속 계정/비밀번호 - 사용할 계정명이 같은 경우, 가능한 정도까지 생각하고 있다.


작성이의 말.

 위 내용은 응용사항을 제외하고 개발테스트가 진행되어 확인된 사항이나, 변수 새로고침이나, 패키지 구성에 관해서는 구성했던 기억만으로 작성하여 수정이 필요할 수 있습니다.