2.2.2 이진 데이터 타입

추승완·2025년 3월 14일

오라클 SQL

목록 보기
4/27

이진 데이터 타입

  • 이진자료 타입으로 저장된 자료는 오라클에서 해석되거나 변환되지 않는다.

1. RAW

  • 이진자료 저장
  • 2000BYTE까지 저장 가능(인덱스 처리 가능)
  • 2진수, 16진수 형태의 자료 처리
사용형식)
 컬럼명 RAW(크기)

사용예)
  CREATE TABLE TEMP06(
    COL1 RAW(1000),
    COL2 RAW(1000)
  );
  
  INSERT INTO TEMP06 VALUES('1010010111111100',HEXTORAW('A5FC'));
  SELECT * FROM TEMP06;
  

2. BFILE

  • 4GB 까지의 이진자료 저장
  • 원본자료를 DB밖에 저장하고 테이블에는 경로와 파일명만 저장
  • 자주 변경되는 자료저장에 효율적인 방식
  • 경로표현을 위한 디렉토리 개체 사용
사용형식)
  컬럼명 BFILE
  
사용예)
  1)테이블 생성
    CREATE TABLE TEMP07(
      COL1 BFILE
    );
    
  2)원본파일을 해당 폴더에 저장
    D:\A_TeachingMaterial\02_Oracle\work\sample.jpg
    
  3)디렉토리 개체 생성
    CREATE OR REPLACE DIRECTORY 별칭 AS '절대경로';
    
    CREATE OR REPLACE DIRECTORY TEST_DIR AS 'D:\A_TeachingMaterial\02_Oracle\work'
    
    
  4)테이블에 삽입
  INSERT INTO TEMP07 VALUES(BFILENAME('TEST_DIR', 'sample.jpg'));
  
  SELECT * FROM TEMP07;
  

3. BLOB

  • 4GB 까지의 이진자료 저장
  • 원본자료를 DB안에 저장
  • 자주 변경되지 않는 자료저장에 효율적인 방식
  • PL/SQL 의 프로시저나 함수를 사용
사용형식)
  컬럼명 BLOB
  
사용예)
1)테이블생성
  CREATE TABLE TEMP08(
    NO NUMBER,
    BLOB_FILE BLOB
  );  

2)시퀀스 생성  
  CREATE SEQUENCE seq_blob
    START WITH 1;

3)입력 프로시져 생성    
  CREATE OR REPLACE PROCEDURE proc_blob_insert(V_FILENAME IN VARCHAR2)
  IS
    V_LOCATOR_BLOB  BLOB;
    V_SOURCE_FILE_NAME  BFILE:=BFILENAME('TEST_DIR',V_FILENAME);
    V_DEST_OFFSET NUMBER:=1;
    V_SRC_OFFSET NUMBER:=1;
  BEGIN
    INSERT INTO TEMP08(NO,BLOB_FILE) VALUES(seq_blob.NEXTVAL,EMPTY_BLOB())
      RETURNING  BLOB_FILE INTO V_LOCATOR_BLOB;
      
    DBMS_LOB.OPEN(V_SOURCE_FILE_NAME,DBMS_LOB.LOB_READONLY);  
    DBMS_LOB.LOADBLOBFROMFILE(V_LOCATOR_BLOB,
                              V_SOURCE_FILE_NAME,
                              DBMS_LOB.GETLENGTH(V_SOURCE_FILE_NAME),
                              V_DEST_OFFSET,
                              V_SRC_OFFSET);
    DBMS_LOB.CLOSE(V_SOURCE_FILE_NAME);
    COMMIT;
  END;

4)삽입실행    
  EXECUTE proc_blob_insert('sample.jpg');

5)결과확인  
  SELECT * FROM TEMP08;

profile
안녕하세요. 개발, 해보겠습니다

0개의 댓글