본문 바로가기

DataBase/Oracle

LONG TYPE을 LOB TYPE으로 CONVERSION하는 방법(TO_LOB)

LONG TYPE을 LOB TYPE으로 CONVERSION하는 방법(TO_LOB)
 
Bulletin no 12143  참고
 
 
Oracle8 부터 LONG이나 LONG RAW Type과는 별도로 LOB Type이 추가 되었습니다.
 
LONG 이나 LONG RAW Type을 CLOB 또는 BLOB Type으로 변경하기 위해서는 Oracle8에서는
데이타를 다시 입력해야 했지만, 오라클 8i부터는 TO_LOB Function을 이용해서  Long Type의 Data를 LOB Type으로 쉽게 Conversion할 수 있습니다.

TO_LOB Function은 보통 CREATE TABLE .. AS SELECT .. 문장이나
INSERT INTO .. SELECT .. 문장을 이용해서 쉽게 사용 할 수 있습니다.


 


[예제1]  LONG Type의 데이타를 CLOB Type으로 옮기는 방법
           아래의 예제에서 Type만 LONG RAW와 BLOB으로로 바꾸어도 가능 합니다.

 
-- 마이그레이션 테스트를 위한 long컬럼을 가지는 테이블을 생성 합니다.
SQL>CREATE TABLE long_data (
       c1 NUMBER,
       c2 LONG);

테이블이 생성되었습니다.


-- 테이블의 확인
SQL> DESC long_data
 
 Name        Null?  Type
 ----------- ------ ----
 C1                 NUMBER
 C2                 LONG
 

-- 샘플 데이터를 입력 합니다.
SQL>INSERT INTO long_data
       VALUES (1, 'This is some long data to be migrated to a CLOB');
1 개의 행이 만들어졌습니다.
 
SQL>INSERT INTO long_data
       VALUES (2, 'long컬럼을 clob으로 마이그레이션 하기 위한 테스트 데이터 입니다.');
1 개의 행이 만들어졌습니다.
 

-- clob로 마이그레이션 하는 테이블을 생성 합니다.
SQL>CREATE TABLE test_lobs(
       c1 NUMBER,
       c2 CLOB);
 
테이블이 생성되었습니다.
 

-- 테이블의 확인
SQL> DESC test_lobs
 Name        Null?    Type
 ----------- -------- ----
 C1                      NUMBER
 C2                      CLOB
 

-- LONG타입의 데이터를 CLOB타입의 데이터로 변환
SQL>INSERT INTO test_lobs
       SELECT c1, to_lob(c2)
       FROM  long_data;
2 개의 행이 만들어졌습니다.
 
 
-- 변환된 데이터를 확인 합니다.
SQL> SELECT c2 FROM test_lobs;
 
C2
-----------------------------------------------------------------
This is some long data to be migrated to a CLOB
long컬럼을 clob으로 마이그레이션 하기 위한 테스트 데이터 입니다.


 


[예제2] LONG Type을 CLOB Type으로 바꾸어 Table 생성하는 방법


-- 새로운 테이블을 생성하면서 기존의 LONG Type의 데이터를 CLOB Type의 데이터로 변환합니다.
SQL>CREATE TABLE clob_data
       AS SELECT c1, to_lob(c2) c2
       FROM long_data;
테이블이 생성되었습니다.
 

-- 데이터를 확인해 보세요..
SQL>  SELECT c2 FROM  long_data;
 
 


[예제3] LONG RAW Type을 BLOB Type으로 바꾸어 Table 생성하는 방법
 

-- image_data테이블에 LONG RAW컬럼이 있다고 가정을 하면은
SQL> DESC image_data
 Name                            Null?    Type
 ------------------------------- -------- ----
 C1                                       NUMBER
 C2                                       LONG RAW
 

-- 아래의 예제와 같이 테이블을 생성하면서 쉽게 blob Type으로 변환 할 수 있습니다.
SQL>CREATE TABLE blob_data
       AS SELECT c1, to_lob(c2) c2 FROM image_data;

 

'DataBase > Oracle' 카테고리의 다른 글

SQL*Loader 예제  (0) 2008.08.08
NVL2 함수의 사용  (0) 2008.08.08
[펌]LIKE연산자에서 '%'와 '_'를 포함하는 단어 검색 방법  (0) 2008.08.08
[펌]IMPORT  (0) 2008.08.08
[펌]EXPORT  (0) 2008.08.08