두 테이블의 구조 일치 비교 0 2 678

by cherish [SQL Query] [2018.08.09 16:05:03]


안녕하세요,

어쩌다 정보계 DBA를 맡게 되어 헤메고 있는 1인입니다.

야간에 백업 및 적재 배치를 돌리고 있는데 이게 가끔 Parallel 오류를 내면서

적재가 안되는 상황이 발생해서

해당 오류가 발생하는 주 테이블의 TMP 테이블을 만들어서 데이터 적재 전에 두 테이블을 Switch 하는 프로시져를 만들려고 하는데요.

 

대상테이블 과 TMP 테이블명은 따로 정보성 테이블에서 관리합니다.

TMP테이블명과 동일한 테이블이 존재하는지 확인하고(이건 가능)

대상테이블과 TMP 테이블의 구조가 같은지(컬럼명, data type)를 비교한 후에

테이블 스위칭 작업을 하려고 합니다.

 

밑줄친 부분을 어떻게 체크할 수 있을지 고민중인데 잘 떠오르지 않아 이렇게 질문글 남깁니다.

by 우리집아찌 [2018.08.09 16:34:08]
/*  UNION ALL  이용 샘플      
    FULL OUTER JOIN 이용하셔도 됩니다.
    CTAS 이용하시면 간단히 복사할수 있습니다.
*/
SELECT T.* 
   FROM  ( SELECT  COLUMN_NAME
                 , DATA_TYPE
                 , DATA_LENGTH
                 , DATA_PRECISION
                 , DATA_SCALE
              FROM USER_TAB_COLUMNS
             WHERE TABLE_NAME = 'A' 
        
             UNION ALL
        
            SELECT COLUMN_NAME
                 , DATA_TYPE
                 , DATA_LENGTH
                 , DATA_PRECISION
                 , DATA_SCALE
              FROM USER_TAB_COLUMNS
             WHERE TABLE_NAME = 'B' 
            ) T
   GROUP BY COLUMN_NAME , DATA_TYPE , DATA_LENGTH , DATA_PRECISION , DATA_SCALE
   HAVING COUNT(*) = 1 

 


by cherish [2018.08.09 17:08:33]

깔끔하게 해결되는군요!

정말 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입