관리 메뉴

SIMPLE & UNIQUE

Oracle 대형 데이터형(BLOB, CLOB, LOB, NCLOB, BFILE) 본문

oracle

Oracle 대형 데이터형(BLOB, CLOB, LOB, NCLOB, BFILE)

착한코딩 2017. 4. 13. 10:39

Oracle 대형 데이터형(BLOB, CLOB, LOB, NCLOB, BFILE)


1. LOB - Long Object

- LOB은 TEXT, 그래픽, 이미지, 비디오, 사운드 등 구조화되지 않은 대형 데이터를 저장시 사용한다.

- 일반적으로 테이블에 저장되는 구조화된 데이터들은 크기가 작지만, 멀티미디어 데이터의 크기가 크다.

- 크기가 큰 데이터는 DB에 저장하기 힘들기 때문에 OS상 존재하는 파일에 데이터베이스가 접근하게 된다.

- LONG, LONG RAW 데이터 유형은 예전에 사용던 것이고, 현재는 대부분 LOB 데이터 유형을 사용한다.

- TO_LOB 함수를 이용하여 LONG 및 LONG RAW 를 LOB 으로 변경할 수 있다.



- CLOB: 문자 대형 객체 (Character). Oracle Server는 CLOB과 VARCHAR2 사이에 암시적 변환을 수행한다.

- BLOB: 이진 대형 객체 (Binary). 이미지, 동영상, MP3 등

- NCLOB: 내셔널 문자 대형 객체 (National). 오라클에서 정의되는 National Character Set을 따르는 문자.

- BFILE: OS에 저장되는 이진 파일의 이름과 위치를 저장. 읽기 전용 모드로만 액세스 가능.


(데이터베이스 내부, 외부에 따라)

- 내부 : BLOB, CLOB, NCLOB

         -> Table에 LOB 형식의 컬럼을 생성하고 이곳에 데이터의 실제위치를 가리키는 Locator(위치자) 저장.

- 외부 : BFILE

특징

- 하나의 테이블에 여러 개의 LOB 열(column) 가능

- 최고 4GB까지 저장

- SELECT로 위치자 반환

- 순서대로 또는 순서없이 데이터 저장

- 임의적 데이터 액세스

(LOB 구성)

- LOB 값 : 저장될 실제 객체를 구성하는 데이터

- LOB 위치자 : 데이터베이스에 저장된 LOB값의 위치에 대한 포인터

- LOB열에는 데이터가 없고 LOB 위치자만 들어있다.



2. CLOB

---------------------------------------------------------------------------------------

clob_test.sql

---------------------------------------------------------------------------------------

CREATE TABLE CAR (

        id NUMBER(6) PRIMARY KEY NOT NULL,

        name VARCHAR2(20),

        price NUMBER(10),

        review  CLOB);

INSERT INTO CAR VALUES (100, 'SM7', 25000000, '삼성에서 나온 SM7을 타보니 정말 편안했다.');

INSERT INTO CAR VALUES (200, 'PORTER', 13000000, '역시 1톤트럭의 대표자!!');

INSERT INTO CAR VALUES (300, 'VERNA', 9000000, '싸고 좋은 거 같아용~^^*');

INSERT INTO CAR VALUES (400, 'SANTAFE', 33000000, EMPTY_CLOB());


- 테이블 생성시 CLOB 타입 컬럼을 선언하고, 데이터 입력.

- 따로 SIZE는 지정하지 않는다.

- EMPTY_CLOB() 함수는 위치자(Locator)를 아무 것도 없는 데이터로 초기화시킨다.


1) import 시켜야할 API

① oracle.sql.BLOB

② oracle.sql.CLOB

③ oracle.jdbc.driver.OracleResultSet

 

출처 : http://orderby.tistory.com/entry/


Comments