[Oracle SQL] 기타자료형-RAW, BFILE, BLOB

고동이의 IT·2021년 10월 7일
0

Oracle SQL

목록 보기
6/31
post-thumbnail

기타 자료형

  • 이진자료(BINARY DATA)를 저장하기 위한 데이터 타입

  • RAW, LONG RAW, BLOB, BFILE 등이 제공됨. BLOB, BFILE 을 위주로 사용

  • 이진 자료는 오라클에 의해 해석되거나 변환되지 않음.

  • BLOB 는 DB안에 저장 BFILE 은 DB밖에 경로정보만 저장

1) RAW

. 상대적으로 작은 단위의(젤작은) 2진 자료 저장

. 작은 양이라 인덱스 처리가 가능

. 최대 2000 BYTE 처리 가능.

. 16진수 및 2진수의 형태로 저장

(사용형식)

컬럼명 RAW(크기);

사용예)

CREATE TABLE TEMP08(

COL1 RAW(2000));

​

INSERT INTO TEMP08 VALUES (HEXTORAW('2ADD'));

INSERT INTO TEMP08 VALUES ('2A7F');

INSERT INTO TEMP08 VALUES('0010101001111111');

​

SELECT * FROM TEMP08;

2) BFILE

. 이진자료 저장방식

. 대상의 자료는 데이터베이스 외부에 저장되고 데이터베이스는 경로정보와 파일명만 저장

. 최대 4GB까지 처리 가능

(사용형식)

컬럼명 BFILE;

​

사용예) CREATE TABLE TEMP09(COL1 BFILE);

​

** 사진자료 저장 순서

1. 자료 준비(절대경로 파악)

절대경로: 'D:\A_TeachingMaterial\2.Oracle'

2. 디렉토리 객체 생성

CREATE DIRECTORY 디렉토리 이름 AS 경로명

​

CREATE DIRECTORY TEST_DIR AS 'D:\A_TeachingMaterial\2.Oracle';

3. 데이터 삽입

INSERT INTO TEMP09

VALUES(BFILENAME('TEST_DIR','sample.jpg'));

​

SELECT * FROM TEMP09;

​

-> 해석안되기 때문에 사용자가 작성한 경로와 파일명만 나옴.

3)BLOB

. 이진데이터 처리 데이터 타입

. 원본자료(사진, 동영상 등)를 데이터베이스 내부에 저장

. 4GB까지 저장 가능

(사용형식)

컬럼명 BLOB;

​

사용예)

CREATE TABLE TEMP10(COL BLOB);

​

** 저장순서

1. 테이블 준비

2. 디렉토리 객체 생성

3. 데이터 삽입(INSERT문으로 직접 삽입할 수 없다 때문에 여러개의 변수 필요 절차적 언어 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 TEMP10(COL) VALUES(EMPTY_BLOB())

RETURN COL INTO L_BLOB;

​

-- A INTO B 는 B:=A A값을 B에 할당해라

​

L_BFILE:=BFILENAME(L_DIR,L_FILE);

DBMS_LOB.FILEOPEN(L_BFILE, DBMS_LOB.FILE_READONLY);

-- FILEOPEN -> B_FILE에 있는 데이터를 READONLY 형식으로 열어라. 
읽기전용이아니면 그림파일이 수정될 수 있음​

DBMS_LOB.LOADFROMFILE(L_BLOB, L_BFILE, DBMS_LOB.GETLENGTH(L_BFILE));

-- B_FILE이 가지고 있는 길이를 정해서 B
_FILE에 있는 데이터를 떠내서 BLOB=데이터베이스 안에 저장하라.

DBMS_LOB.FILECLOSE(L_BFILE);

​

COMMIT;

END;

​

SELECT * FROM TEMP10;
profile
삐약..뺙뺙

0개의 댓글