SELECT Y.COLUMN_NAME
FROM
ALL_CONSTRAINTS X, ALL_IND_COLUMNS Y
WHERE
X.OWNER = :OWNER_NAME
AND X.CONSTRAINT_TYPE = 'P'
AND X.TABLE_NAME = :TABLE_NAME
AND X.TABLE_NAME = Y.TABLE_NAME
AND X.CONSTRAINT_NAME = Y.INDEX_NAME
ORDER BY Y.COLUMN_POSITION
FROM
ALL_CONSTRAINTS X, ALL_IND_COLUMNS Y
WHERE
X.OWNER = :OWNER_NAME
AND X.CONSTRAINT_TYPE = 'P'
AND X.TABLE_NAME = :TABLE_NAME
AND X.TABLE_NAME = Y.TABLE_NAME
AND X.CONSTRAINT_NAME = Y.INDEX_NAME
ORDER BY Y.COLUMN_POSITION
'DB/ETL > Oracle' 카테고리의 다른 글
| PK 컬럼 (0) | 2011/05/03 |
|---|---|
| [DB - Oracle] TableSpace 생성 (0) | 2010/11/10 |
| [Oracle] 동적쿼리를 받아서 커서 처리 (0) | 2010/10/04 |
| [ORACLE] REGEXP_SUBSTR, REGEXP_REPLACE (0) | 2010/09/28 |
| [Oracle] Function, Procedure Grant... (0) | 2010/09/11 |
| [Oracle] Procedure (0) | 2010/08/11 |
현재 산업은행의 IFRS 보고서 프로젝트에서
기존 InformETT를 Informatica로 전환하는 작업을 진행중인데
InformETT에서는 하나의 Job에서 Insert/Update 구현이 가능하다
물론 Informatica에서도 Update Strategy로 구현이 가능하지만
Oracle Procedure의 Merge기능처럼 Insert와 Update의 값을 다르게 구현할 수가 없다.
Informatica 에서 위 처럼 구현하기 위에서는 Source와 Target을 Join하여 해결하는 방법으로 처리했다.
이부분은 앞으로 Informatica에서 간단히 해결할 수 있는 Transformation이 나왔으면 한다
Target 테이블에 데이터 존재여부를 확인하기 위해 Target 테이블을 불러와 Outer Join을 한다
org_DEPTNO 가 Target 테이블의 Key 값이기 때문에 해당 값이 존재하다면 Update 를 해야하고
존재하지 않는다면 Insert를 해야한다
.
임시로 Insert시는 기존 DNAME값을 그대로 insert를 하고, Update시는 기존값에 "_UPDATE" 문자열을 추가했다
Update Strategy
Expression에서 out_Flag 에 INSERT 인지 UPDATE인지 여부를 넘겨받은 후
해당 값에 따라 INSERT/UPDATE를 구현한다
기존 InformETT를 Informatica로 전환하는 작업을 진행중인데
InformETT에서는 하나의 Job에서 Insert/Update 구현이 가능하다
물론 Informatica에서도 Update Strategy로 구현이 가능하지만
Oracle Procedure의 Merge기능처럼 Insert와 Update의 값을 다르게 구현할 수가 없다.
Informatica 에서 위 처럼 구현하기 위에서는 Source와 Target을 Join하여 해결하는 방법으로 처리했다.
이부분은 앞으로 Informatica에서 간단히 해결할 수 있는 Transformation이 나왔으면 한다
Target 테이블에 데이터 존재여부를 확인하기 위해 Target 테이블을 불러와 Outer Join을 한다
org_DEPTNO 가 Target 테이블의 Key 값이기 때문에 해당 값이 존재하다면 Update 를 해야하고
존재하지 않는다면 Insert를 해야한다
.
임시로 Insert시는 기존 DNAME값을 그대로 insert를 하고, Update시는 기존값에 "_UPDATE" 문자열을 추가했다
Update Strategy
Expression에서 out_Flag 에 INSERT 인지 UPDATE인지 여부를 넘겨받은 후
해당 값에 따라 INSERT/UPDATE를 구현한다
'DB/ETL > ETL' 카테고리의 다른 글
| [INFORMATICA] Upsert 구현 - Update Strategy Transformation (3) | 2011/01/29 |
|---|---|
| [INFA] Informatica PowerCenter Designer SQL Position (0) | 2011/01/08 |
| [Informatica] Informatica 8.X 설치 - 도메인 Error 해결방법 (0) | 2010/12/03 |
| [Informatica] Folder 생성 (0) | 2010/11/21 |
| [Informatica] Informatica 8.X 설치 #6 - Client 실행 (0) | 2010/11/21 |
| [Informatica] Informatica 8.X 설치 #5 - Client 설치 (0) | 2010/11/20 |
