Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

JDBC를 사용해 MySQL 데이터베이스에 파일 삽입·저장하는 방법

개요

일반적으로 파일의 내용은 MySQL 데이터베이스에서 Clob(TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) 데이터 타입으로 저장됩니다.

JDBC는 Clob 데이터 타입을 기본적으로 지원하므로, 이를 활용하면 파일의 내용을 데이터베이스 테이블에 손쉽게 저장할 수 있습니다.

PreparedStatement 인터페이스의 setCharacterStream() 메서드는 매개변수의 인덱스를 나타내는 정수와 Reader 객체를 인자로 받습니다.

이 메서드는 지정된 인덱스의 매개변수(플레이스홀더)에 해당 Reader 객체(파일)의 내용을 값으로 설정합니다.

따라서 매우 큰 텍스트 값을 데이터베이스에 전송해야 할 때 이 메서드를 사용하면 특히 유용합니다.

JDBC를 사용하여 텍스트 파일 저장하기

JDBC 프로그램으로 데이터베이스에 파일을 저장하려면 먼저 아래와 같이 Clob(TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) 데이터 타입의 컬럼을 포함하는 테이블을 생성해야 합니다.

CREATE TABLE Articles(Name VARCHAR(255), Article LONGTEXT);

이제 JDBC로 데이터베이스에 연결한 뒤, 위에서 생성한 테이블에 값을 삽입하기 위한 PreparedStatement를 준비합니다.

String query = "INSERT INTO Tutorial(Name, Article) VALUES (?,?)";
PreparedStatement pstmt = con.prepareStatement(query);

PreparedStatement 인터페이스가 제공하는 setter 메서드를 사용해 플레이스홀더에 값을 설정하고, Clob 데이터 타입에는 setCharacterStream() 메서드를 사용하여 값을 지정합니다.

예제

다음은 JDBC 프로그램을 사용하여 파일을 MySQL 데이터베이스에 삽입하는 과정을 보여주는 예제입니다. 여기서는 Clob 데이터 타입의 컬럼을 가진 테이블을 생성하고, 세 개의 텍스트 파일 내용을 순차적으로 삽입했습니다.

import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertingFileToDatabase {
   public static void main(String args[]) throws Exception {
      //드라이버 등록
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //데이터베이스 연결
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //값 삽입
      String query = "INSERT INTO Articles(Name, Article) VALUES (?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "article1");
      FileReader reader = new FileReader("E:\\data\\article1.txt");
      pstmt.setCharacterStream(2, reader);
      pstmt.execute();
      pstmt.setString(1, "article2");
      reader = new FileReader("E:\\data\\article2.txt");
      pstmt.setCharacterStream(2, reader);
      pstmt.execute();
      pstmt.setString(1, "article3");
      reader = new FileReader("E:\\data\\article3.txt");
      pstmt.setCharacterStream(2, reader);
      pstmt.execute();
      System.out.println("Data inserted......");
   }
}

실행 결과

Connection established......
Data inserted......

MySQL Workbench를 사용하면 테이블의 내용을 HTML 파일, .csv 파일, 텍스트 파일 등 다양한 형식으로 내보낼 수 있습니다. 데이터를 삽입한 후 테이블의 내용을 HTML 파일로 내보내면 아래와 같은 결과를 확인할 수 있습니다.

JDBC를 사용해 MySQL 데이터베이스에 파일 삽입·저장하는 방법