본문 바로가기
Database/Oracle

[ORACLE] TO_BLOB() 함수로 이미지, 파일 데이터 처리하기

by Papa Martino V 2025. 6. 6.
728x90

오라클 TO_BLOB() 함수로 이미지, 파일 데이터 처리하기
[Oracle] TO_BLOB

1. TO_BLOB() 함수란?

Oracle의 TO_BLOB() 함수는 문자열 또는 RAW 데이터를 BLOB (Binary Large Object) 형식으로 변환하는 함수입니다. 주로 이미지, 영상, PDF, 이진 파일 등 바이너리 데이터를 데이터베이스에 저장할 때 활용됩니다.

2. 함수 문법

TO_BLOB(input_value)
  • input_value: 변환할 RAW 또는 문자열 형식의 값
  • 반환값: BLOB 객체 (바이너리 데이터)

3. 기본 예제

예제 1: RAW 문자열을 BLOB으로 변환

SELECT TO_BLOB(UTL_RAW.CAST_TO_RAW('Hello World')) AS blob_data
FROM dual;

예제 2: 테이블에 BLOB 저장하기

CREATE TABLE file_storage (
  id NUMBER,
  file_name VARCHAR2(255),
  file_data BLOB
);

INSERT INTO file_storage (id, file_name, file_data)
VALUES (
  1,
  'example.txt',
  TO_BLOB(UTL_RAW.CAST_TO_RAW('파일 내용입니다.'))
);

예제 3: VARCHAR2에서 직접 BLOB 변환

SELECT TO_BLOB(UTL_RAW.CAST_TO_RAW(my_column))
FROM my_table;

4. TO_BLOB() 활용 케이스

  • 이미지, 문서 파일을 DB에 저장할 때
  • 웹 애플리케이션에서 다운로드 가능한 콘텐츠 저장
  • 바이너리 로그 데이터 기록
  • 파일 업로드 기능 구현 시 중간 저장소 역할

5. 관련 함수 비교

함수명 설명 용도
TO_BLOB() 문자열/RAW → BLOB 변환 파일 저장, 이진 데이터 처리
TO_CLOB() 문자열 → CLOB 변환 텍스트 데이터 저장
UTL_RAW.CAST_TO_RAW() 문자열 → RAW 변환 중간 변환용

6. 실무 팁 및 주의사항

  • BLOB 칼럼은 일반 SQL 편집기에서 결괏값을 보기가 어렵습니다. 전용 툴 또는 Base64 인코딩 필요
  • VARCHAR2를 직접 TO_BLOB에 넣으면 오류가 발생할 수 있습니다. UTL_RAW.CAST_TO_RAW()를 반드시 중간에 사용해야 합니다.
  • DBMS_LOB 패키지를 활용하면 BLOB 데이터를 부분적으로 읽고 쓸 수 있습니다.
  • 파일 업로드 시 보안(예: 확장자 제한, 용량 제한)을 고려해야 합니다.

7. BLOB 데이터 읽기 예제

DECLARE
  l_blob  BLOB;
  l_raw   RAW(32767);
BEGIN
  SELECT file_data INTO l_blob FROM file_storage WHERE id = 1;
  l_raw := DBMS_LOB.SUBSTR(l_blob, 100, 1); -- 처음 100바이트
  DBMS_OUTPUT.PUT_LINE(UTL_RAW.CAST_TO_VARCHAR2(l_raw));
END;

8. BLOB 활용 실전 예제

파일 다운로드 기능 구현 로직 개요

  1. 웹 서버에서 파일 업로드 수신
  2. Oracle DB에 TO_BLOB()으로 저장
  3. 클라이언트가 다운로드 요청 시 DBMS_LOB.SUBSTR()로 BLOB 읽기
  4. HTTP 응답으로 파일 전송

출처 및 참고 자료

728x90