1. 필요한 라이브러리
먼저 Oracle JDBC 드라이버가 필요합니다. Oracle JDBC 드라이버는 Oracle 공식 사이트에서 다운로드할 수 있습니다. 또는 pom.xml을 사용하는 Maven 프로젝트의 경우 아래와 같은 의존성을 추가할 수 있습니다.
xml 예시)
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.8.0.0</version>
</dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.8.0.0</version>
</dependency>
2. Java 코드 예시
다음 Java 코드에서는 파일을 읽어 BLOB 데이터를 Oracle 데이터베이스에 저장하는 방법을 보여줍니다.
예시 코드:
import java.sql.*;
import java.io.*;
public class BlobInsertExample {
public static void main(String[] args) {
// Oracle DB 연결 정보
String jdbcUrl = "jdbc:oracle:thin:@your_db_host:1521:your_service";
String dbUser = "your_db_username";
String dbPassword = "your_db_password";
// 삽입할 파일 경로
String filePath = "path/to/your/file";
// DB 연결 및 BLOB 데이터 삽입
Connection conn = null;
PreparedStatement pstmt = null;
FileInputStream fis = null;
try {
// 1. 데이터베이스 연결
conn = DriverManager.getConnection(jdbcUrl, dbUser, dbPassword);
// 2. SQL 쿼리 준비
String sql = "INSERT INTO example_table (id, name, data) VALUES (?, ?, ?)";
pstmt = conn.prepareStatement(sql);
// 3. 파일을 읽어서 BLOB으로 설정
File file = new File(filePath);
fis = new FileInputStream(file);
pstmt.setInt(1, 1); // 예시로 ID를 1로 설정
pstmt.setString(2, "example_name"); // 예시로 name을 설정
pstmt.setBinaryStream(3, fis, (int) file.length()); // 파일을 BLOB으로 삽입
// 4. 쿼리 실행
pstmt.executeUpdate();
System.out.println("BLOB 데이터가 성공적으로 삽입되었습니다.");
} catch (SQLException | FileNotFoundException e) {
e.printStackTrace();
} finally {
// 5. 자원 해제
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
if (fis != null) fis.close();
} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.*;
public class BlobInsertExample {
public static void main(String[] args) {
// Oracle DB 연결 정보
String jdbcUrl = "jdbc:oracle:thin:@your_db_host:1521:your_service";
String dbUser = "your_db_username";
String dbPassword = "your_db_password";
// 삽입할 파일 경로
String filePath = "path/to/your/file";
// DB 연결 및 BLOB 데이터 삽입
Connection conn = null;
PreparedStatement pstmt = null;
FileInputStream fis = null;
try {
// 1. 데이터베이스 연결
conn = DriverManager.getConnection(jdbcUrl, dbUser, dbPassword);
// 2. SQL 쿼리 준비
String sql = "INSERT INTO example_table (id, name, data) VALUES (?, ?, ?)";
pstmt = conn.prepareStatement(sql);
// 3. 파일을 읽어서 BLOB으로 설정
File file = new File(filePath);
fis = new FileInputStream(file);
pstmt.setInt(1, 1); // 예시로 ID를 1로 설정
pstmt.setString(2, "example_name"); // 예시로 name을 설정
pstmt.setBinaryStream(3, fis, (int) file.length()); // 파일을 BLOB으로 삽입
// 4. 쿼리 실행
pstmt.executeUpdate();
System.out.println("BLOB 데이터가 성공적으로 삽입되었습니다.");
} catch (SQLException | FileNotFoundException e) {
e.printStackTrace();
} finally {
// 5. 자원 해제
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
if (fis != null) fis.close();
} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
}
}
3. 코드 설명
- JDBC 연결: DriverManager.getConnection을 사용하여 Oracle 데이터베이스에 연결합니다. jdbcUrl, dbUser, dbPassword는 본인의 DB 연결 정보를 입력해야 합니다.
- 파일을 읽어 BLOB으로 삽입: 파일을 FileInputStream으로 읽고, PreparedStatement의 setBinaryStream 메서드를 사용하여 BLOB 컬럼에 삽입합니다. 여기서 file.length()는 파일의 크기를 바이트 단위로 반환하며, 이를 통해 파일 크기를 BLOB에 정확히 매핑할 수 있습니다.
- SQL 쿼리: INSERT INTO example_table (id, name, data)는 id, name, data 컬럼에 데이터를 삽입하는 SQL 쿼리입니다. data 컬럼은 BLOB 타입이어야 합니다.
- 자원 해제: Connection, PreparedStatement, FileInputStream 객체를 finally 블록에서 해제하여 자원 누수를 방지합니다.
4. 데이터베이스 테이블 예시
다음은 BLOB 데이터를 저장할 수 있는 Oracle 테이블의 예시입니다.
CREATE TABLE example_table (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
data BLOB
);
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
data BLOB
);
5. 주의 사항
- 파일 경로: filePath는 실제 파일의 경로로 설정해야 하며, Oracle DB 서버가 접근할 수 있는 경로여야 합니다.
- DB 연결 정보: jdbcUrl, dbUser, dbPassword는 실제 사용하는 데이터베이스 정보로 바꿔야 합니다.
- JDBC 드라이버: Oracle의 JDBC 드라이버(예: ojdbc8.jar)가 클래스패스에 포함되어 있어야 합니다.
이 코드를 실행하면 지정된 파일을 Oracle 데이터베이스의 BLOB 컬럼에 삽입할 수 있습니다.
반응형
'IT' 카테고리의 다른 글
뤼튼(Wrtn) 인공지능(AI)을 활용한 자동 글쓰기 (0) | 2025.02.18 |
---|---|
블로그 애드센스 광고 수익율 극대화하는 방법 (2) | 2025.02.11 |
SEO 최적화 (2) | 2025.02.01 |