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 (유니코드)
'데이터 사이언스 DataScience > Data Base 데이터베이스' 카테고리의 다른 글
[Oracle] ORA-30036 UNDO 테이블스페이스 관리 (0) | 2020.09.10 |
---|---|
[Oracle] 테이블 단편화 정보 확인 (리오그 대상 식별법) (0) | 2020.08.21 |
[Oracle] 여러 행을 한 행으로 합치기 (LISTAGG, WM_CONCAT 차이) (0) | 2020.08.04 |
[Oracle] 시퀀스의 옵션에 담긴 의미 (0) | 2020.07.14 |
[Oracle 11g~] 온라인 테이블 redefinition (reorg) (0) | 2020.07.13 |