[SQL] 데이터타입 - 4. 이진자료 타입

LHR·2022년 5월 11일
0

SQL

목록 보기
7/11

개요

  • 문자 데이터 타입 X
  • 문자열, 숫자, 날짜, 2진 데이터 타입

4. 이진자료 타입

  • BLOB, BFILE, RAW, 등이 제공됨

(1) RAW

  • 비교적 적은 규모의 이진자료 저장
  • 인덱스 처리 가능
  • 오라클에서 데이터 해석이나 변환을 제공하지 않음 --다른 응용프로그램에서 변환해야함
  • 최대 2000BYTE까지 저장 가능 --용량작음
  • 16진수와 2진수 저장 가능 --16진법ABCDEF

(사용형식)

컬럼명 RAW(크기)

(사용예)

    CREATE TABLE TEMP07(
        COL1 RAW(1000),
        COL2 RAW(1000));
        
    INSERT INTO TEMP07
        VALUES(HEXTORAW('A5FC'),'1010010111111100'); --1010 A 0101 5 1111 F 1100 C
    SELECT * FROM TEMP07;


(2)BFILE

  • 이진자료 저장
  • 원본파일은 데이터베이스 밖에 저장하고 데이터베이스에는 경로(Path)만 저장
  • 경로 객체(DIRECTORY) 필요
  • 4GB까지 저장 가능

(사용형식)

컬럼명 BFILE

  • 디렉토리 객체의 별칭(Alias)는 30BYTE, 파일명은 256BYTE까지 가능

그림파일 저장순서

0)테이블 생성
      CREATE TABLE TEMP08(
        COL1 BFILE);
        
1)그림파일 저장
      
2)디렉토리객체 생성 --경로,파일명 절대경로 C:\\ , 상대경로 .나 ..부모
      CREATE DIRECTORY 디렉토리별칭  AS '절대경로';
      CREATE DIRECTORY TEST_DIR   AS 'D:\WORK\Oracle';
      
3)데이터 삽입
      INSERT INTO TEMP08 
        VALUES(BFILENAME('TEST_DIR', 'sample.jpg')); --BFILENAME함수
        
     SELECT * FROM TEMP08;

(3)BLOB

  • 이진자료 저장
  • 원본 이진자료를 데이터테이블 안에 저장
  • 4GB까지 저장 가능

(사용형식)

컬럼명 BLOB

그림파일 저장순서

0)테이블생성
      CREATE TABLE TEMP09(
        COL1 BLOB);
        
1)익명블록(PL/SQL)작성 PL절차적언어/SQL
      DECLARE  --선언부
       L_DIR VARCHAR2(20):='TEST_DIR';
       L_FILE VARCHAR2(30):='sample.jpg';
       L_BFILE BFILE;
       L_BLOB BLOB;
      BEGIN  
      	 INSERT INTO TEMP09(COL1) VALUES(EMPTY_BLOB()) --EMPTY로 컬럼 지움
            RETURN COL1 INTO L_BLOB; --L_BLOB 값을 COL1에 할당하라
       L_BFILE:=BFILENAME(L_DIR,L_FILE);    
       DBMS_LOB.FILEOPEN(L_BFILE,DBMS_LOB.FILE_READONLY); --B_FILE에 있는 데이터를 READONLY로 열어라
       DBMS_LOB.LOADFROMFILE(L_BLOB,L_BFILE,DBMS_LOB.GETLENGTH(L_BFILE)); --B_FILE이 가지고 잇는 길이를 정해서 B_FILE에 있는 데이터를 꺼내 BOLB=DB안에저장
       DBMS_LOB.FILECLOSE(L_BFILE);
        
      	COMMIT;
     END;
     
     SELECT * FROM TEMP09;

DROP TABLE TEMP01; 테이블 삭제

0개의 댓글