본문 바로가기
Programming/MSSQL

ORACLE TO MSSQL 테이블 스키마 변경하기

by 제타 2018. 4. 16.
반응형

오라클 테이블을 MSSQL로 마이그레이션 하는 경우가 생길 수 있다.

이때 다음 쿼리를 사용하면 된다. 예를 들어서 MSSQL은 COLLATE Korean_Wansung_CS_AS, DATETIME2(0)를 사용한다고 하자.


다음 쿼리에 TBL_NM에 스키마를 복제할 오라클 테이블명을 적어주면 된다


SELECT 

  CASE A.COLUMN_ID WHEN 1 THEN ' '||A.COLUMN_NAME ELSE ','||A.COLUMN_NAME END COLUMN_NAME

, CASE WHEN A.DATA_TYPE = 'VARCHAR2' AND A.DATA_LENGTH = 8 AND A.COLUMN_NAME LIKE '%DT' THEN 'date' 

       WHEN A.DATA_TYPE = 'VARCHAR2' THEN 'varchar('||TO_CHAR(A.DATA_LENGTH)||') COLLATE Korean_Wansung_CS_AS' 

       WHEN A.DATA_TYPE = 'NUMBER'   THEN 'decimal('||TO_CHAR(A.DATA_PRECISION)||','||A.DATA_SCALE||')' 

       WHEN A.DATA_TYPE = 'DATE'     THEN 'datetime2(0)'

       ELSE '?' 

  END DATA_TYPE

, CASE A.NULLABLE  WHEN 'N' THEN ' NOT NULL' ELSE ' NULL' END NULLABLE

, A.*

FROM ALL_TAB_COLUMNS A

WHERE TABLE_NAME = 'TBL_NM'

ORDER BY COLUMN_ID;



이후에 ETL을 활용해서 데이터를 가져오는 방식으로 테이블 복사 완료^^

반응형