본문 바로가기

DATABASE

[Oracle] LOB(Large Object) 데이터 형식이란

 

Oracle 데이터베이스에서는 다양한 LOB(Large Object) 데이터 형식을 제공한다.

LOB 데이터 형식은 대용량 데이터를 저장하는 데 사용되며 주요 Oracle LOB 데이터 형식과 간단한 예제를 알아보자

 

 

 1. BLOB (Binary Large Object):

  • 이진 데이터를 저장하기 위한 데이터 형식으로 주로 이미지, 동영상, 오디오 파일 등 이진 데이터를 저장하는 데 사용된다
  • 이미지를 BLOB로 저장하기
CREATE TABLE ImageTable (id NUMBER, image BLOB); 
INSERT INTO ImageTable (id, image) VALUES (1, utl_raw.cast_to_raw('이진이미지데이터'));

 

 

 

2. CLOB (Character Large Object):

  • 문자 데이터를 저장하기 위한 데이터 형식으로 주로 텍스트, 문서, HTML, XML 데이터 등 문자열 데이터를 저장하는 데 사용된다
  • 텍스트 문서를 CLOB로 저장하기
CREATE TABLE TextDocument (id NUMBER, document CLOB); 
INSERT INTO TextDocument (id, document) VALUES (1, '이것은 CLOB로 저장된 텍스트 문서입니다.');

 

 

3. NCLOB (National Character Large Object):

  • 다국어 및 유니코드 문자 데이터를 저장하기 위한 데이터 형식으로, CLOB와 유사하지만 다국어 문자 데이터를 지원한다
  • 다국어 텍스트를 NCLOB로 저장하기
CREATE TABLE MultilingualText (id NUMBER, text NCLOB); 
INSERT INTO MultilingualText (id, text) VALUES (1, '多语言文本');

 

 

4. BFILE (Binary File LOB):

  • 이진 파일의 경로를 저장하는 데이터 형식으로, 실제 파일은 파일 시스템에 저장되며 데이터베이스는 파일의 경로만 저장된다
  • BFILE로 파일 경로 저장하기
CREATE TABLE BinaryFiles (id NUMBER, file BFILE); 
INSERT INTO BinaryFiles (id, file) VALUES (1, BFILENAME('DIRECTORY', 'file.pdf'));

 

 

 

위의 형식은 Oracle 데이터베이스에서 사용되는 주요 LOB 데이터 형식이며,

데이터베이스 내에서 대용량 데이터를 효과적으로 저장하고 관리하는 데 사용된다.

 

 

 

 

... 번외

java에서 clob데이터를 디비에 저장하고 읽어오는 방법

ublic String getLargeCLOBData(Long id) throws SQLException {
    try (Connection connection = dataSource.getConnection();
         PreparedStatement preparedStatement = connection.prepareStatement("SELECT clob_data FROM my_table WHERE id = ?");
         ) {
        preparedStatement.setLong(1, id);
        try (ResultSet resultSet = preparedStatement.executeQuery()) {
            if (resultSet.next()) {
                Clob clob = resultSet.getClob("clob_data");
                try (Reader reader = clob.getCharacterStream()) {
                    char[] buffer = new char[1024]; // 읽을 버퍼 크기 조정
                    StringBuilder result = new StringBuilder();
                    int charsRead;
                    while ((charsRead = reader.read(buffer, 0, buffer.length)) != -1) {
                        result.append(buffer, 0, charsRead);
                    }
                    return result.toString();
                }
            }
        }
    }
    return null;
}

 

 

 

끄읏 -!