본문 바로가기

데이터 사이언스 DataScience/Data Base 데이터베이스

[Oracle] LONG 타입 데이터 TO_LOB 통해 CTAS, ITAS 하기

0. 결론부터

   1) CTAS를 통한 생성 스크립트 예시

CREATE TABLE HR.LONG_TEST_CTAS AS 
SELECT 
	ID, 
	TO_LOB(LONG_COLUMN) LONG_COLUMN
FROM HR.LONG_TEST;

 

  2) ITAS를 통한 생성 스크립트 예시

-- 1. 대상 테이블 먼저 생성
CREATE TABLE HR.LONG_TEST_ITAS
   (	"ID" VARCHAR2(10 BYTE), 
	    "LONG_COLUMN" LONG
   ) SEGMENT CREATION IMMEDIATE 
  NOLOGGING;

-- 2. ITAS 실행 
INSERT INTO HR.LONG_TEST_ITAS 
SELECT 
        ID, 
        TO_LOB(LONG_COLUMN) LONG_COLUMN
FROM HR.LONG_TEST;

 

   3) 방법 요약

     LONG 데이터를 이용해 INSERT를 하기 위해서는 TO_LOB(  )을 통해 LONG 데이터를 CLOB 형태로 임시로 바꿔줘야한다. (CLOB : Charcater Large OBject)

    이때 SELECT 절에는 모든 컬럼을 명시해주고 LONG 타입 컬럼에서 TO_LOB( )을 통해 데이터 형을 변경해주면 된다.

    주의 할 점 : TO_LOB을 하는 컬럼의 Alias를 반드시 입력해줘야한다.

 

 

1. CTAS, ITAS란?

 

  대량의 테이블을 다른 테이블로 옮길때, CTAS와 ITAS를 이용하면 편리하다.

 

 1) CTAS : Create Table As Select

   테이블을 생성하면서 기존 테이블의 데이터를 복사하는 방법이다.

 

   - 활용예1 - 기존 테이블과 동일한 레이아웃, 데이터를 가진 테이블 생성

CREATE TABLE {생성할 테이블}
SELECT * FROM {데이터를 가져올 테이블};

 

  - 활용예2 - 기존 테이블과 동일한 레이아웃을 가진 빈 테이블 만들기

CREATE TABLE {생성할 테이블}
SELECT * FROM {데이터를 가져올 테이블}
WHERE 1=2;

 

이 외에 컬럼을 명시해줘서 데이터를 변형할 수 있다.

 

 2) ITAS : Insert Table (As) Select

CTAS를 이용하면 만들어진 테이블은 기존 테이블과 레이아웃이 동일하다.

ITAS를 이용할 경우 원하는 레이아웃으로 테이블을 만들고, 데이터만 CTAS 에서 처럼 가져올 수 있다.

(예시는 위에 0.결론 부분 참고)

 

 

2. LONG 데이터 타입

 이름에서 알 수 있듯이 큰 데이터를 저장할 수 있는 컬럼의 데이터 타입이다.

Java에서는 Long이 8Bytes에 불과하지만, 오라클에서는 무려 2GB의 데이터를 저장할 수 있다.

 

* Oracle은 LOB 타입 권장(8i 이후), LONG은 이전 버전에서 많이 쓰임.

 

 

3. LOB 데이터 타입

  위에 CLOB에서 살짝 언급이 됐는데 Large OBject의 줄임말이다.

최대 4GB의 데이터를 저장할 수 있다. BLOB, CLOB, NCLOB 등이 있음.

 

BLOB - Binary

CLOB - (Single-btye) Character

NCLOB - National Character (유니코드)

 

반응형