Hướng dẫn how read data from excel sheet and insert into database table in java? - Làm thế nào để đọc dữ liệu từ trang tính excel và chèn vào bảng cơ sở dữ liệu trong java?

Chi tiết của & NBSP; Cập nhật lần cuối vào ngày 06 tháng 10 năm 2019 & NBSP; | & nbsp; & nbsp; in & nbsp; E-mail Last Updated on 06 October 2019   |   Print  Email

Nhập dữ liệu từ Excel vào cơ sở dữ liệu là một nhiệm vụ phổ biến của chương trình phần mềm. Vì vậy, trong bài đăng này, tôi sẽ chia sẻ với bạn một chương trình Java mẫu đọc dữ liệu từ tệp Excel và chèn dữ liệu đó vào cơ sở dữ liệu MySQL.

Giả sử rằng chúng ta có một tệp Excel lưu trữ thông tin về các sinh viên đăng ký vào các khóa học như thế này:

Hướng dẫn how read data from excel sheet and insert into database table in java? - Làm thế nào để đọc dữ liệu từ trang tính excel và chèn vào bảng cơ sở dữ liệu trong java?

Như bạn có thể thấy, tệp Excel này chỉ có một tờ và thông tin sinh viên được lưu trữ trong 3 cột: Tên sinh viên (văn bản), đăng ký (thời gian ngày) và tiến trình (số). Vì vậy, hãy để tạo ra một bảng tương ứng trong cơ sở dữ liệu với cấu trúc sau:

Hướng dẫn how read data from excel sheet and insert into database table in java? - Làm thế nào để đọc dữ liệu từ trang tính excel và chèn vào bảng cơ sở dữ liệu trong java?

Bạn có thể chạy tập lệnh MySQL sau để tạo bảng này:

CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) NOT NULL,
  `enrolled` timestamp NOT NULL,
  `progress` int(11) NOT NULL,
  PRIMARY KEY (`id`)
);

Lưu ý rằng loại dữ liệu của cột đã đăng ký & NBSP; là dấu thời gian để nó có thể giữ cả giá trị ngày và thời gian.enrolled column is timestamp so it can hold both date and time values.

Để đọc tệp Excel từ Java, chúng ta có thể sử dụng thư viện Apache POI. Giả sử rằng dự án của bạn sử dụng maven, vì vậy hãy thêm phụ thuộc sau vào tệp pom.xml:pom.xml file:


	org.apache.poi
	poi-ooxml
	4.1.0

Và để chèn dữ liệu vào cơ sở dữ liệu MySQL từ Java, chúng tôi cần sử dụng một phụ thuộc cho trình điều khiển JDBC MySQL:


	mysql
	mysql-connector-java
	5.1.46
	runtime

Và dưới đây là mã đầy đủ của chương trình mẫu đọc dữ liệu từ tệp Excel và chèn dữ liệu đó vào cơ sở dữ liệu MySQL:

package net.codejava;

import java.io.*;
import java.sql.*;
import java.util.*;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;

/**
 * Sample Java program that imports data from an Excel file to MySQL database.
 * 
 * @author Nam Ha Minh - https://www.codejava.net
 * 
 */
public class Excel2DatabaseTest {

	public static void main(String[] args) {
		String jdbcURL = "jdbc:mysql://localhost:3306/sales";
		String username = "user";
		String password = "password";

		String excelFilePath = "Students.xlsx";

		int batchSize = 20;

		Connection connection = null;

		try {
			long start = System.currentTimeMillis();
			
			FileInputStream inputStream = new FileInputStream(excelFilePath);

			Workbook workbook = new XSSFWorkbook(inputStream);

			Sheet firstSheet = workbook.getSheetAt(0);
			Iterator rowIterator = firstSheet.iterator();

            connection = DriverManager.getConnection(jdbcURL, username, password);
            connection.setAutoCommit(false);
 
            String sql = "INSERT INTO students (name, enrolled, progress) VALUES (?, ?, ?)";
            PreparedStatement statement = connection.prepareStatement(sql);		
			
            int count = 0;
            
            rowIterator.next(); // skip the header row
            
			while (rowIterator.hasNext()) {
				Row nextRow = rowIterator.next();
				Iterator cellIterator = nextRow.cellIterator();

				while (cellIterator.hasNext()) {
					Cell nextCell = cellIterator.next();

					int columnIndex = nextCell.getColumnIndex();

					switch (columnIndex) {
					case 0:
						String name = nextCell.getStringCellValue();
						statement.setString(1, name);
						break;
					case 1:
						Date enrollDate = nextCell.getDateCellValue();
						statement.setTimestamp(2, new Timestamp(enrollDate.getTime()));
					case 2:
						int progress = (int) nextCell.getNumericCellValue();
						statement.setInt(3, progress);
					}

				}
				
                statement.addBatch();
                
                if (count % batchSize == 0) {
                    statement.executeBatch();
                }				

			}

			workbook.close();
			
            // execute the remaining queries
            statement.executeBatch();
 
            connection.commit();
            connection.close();	
            
            long end = System.currentTimeMillis();
            System.out.printf("Import done in %d ms\n", (end - start));
            
		} catch (IOException ex1) {
			System.out.println("Error reading file");
			ex1.printStackTrace();
		} catch (SQLException ex2) {
			System.out.println("Database error");
			ex2.printStackTrace();
		}

	}
}

Như bạn có thể thấy, chúng tôi sử dụng tính năng cập nhật hàng loạt JDBC để chèn hiệu quả một số lượng lớn các hàng vào cơ sở dữ liệu, với kích thước hàng loạt là 20 - có nghĩa là nó sẽ nhóm tối đa 20 câu lệnh SQL trong mỗi lô được gửi đến máy chủ để xử lý.

Chúng tôi cũng sử dụng giao dịch JDBC để đảm bảo rằng tất cả các hàng được chèn hoặc không có. Cuối cùng, chúng tôi đo thời gian cần thiết để hoàn thành việc đọc và chèn dữ liệu.

Chạy chương trình này và bạn sẽ thấy đầu ra bằng cách nào đó như thế này:

Import done in 3462 ms

Để xác minh, hãy chạy câu lệnh SQL Chọn trong MySQL Workbench và bạn sẽ thấy:

Hướng dẫn how read data from excel sheet and insert into database table in java? - Làm thế nào để đọc dữ liệu từ trang tính excel và chèn vào bảng cơ sở dữ liệu trong java?

Đó là cách viết mã Java nhập dữ liệu từ tệp Excel và chèn vào cơ sở dữ liệu. Để bạn tham khảo, tôi đã đính kèm dự án mẫu trong phần đính kèm bên dưới.

 

Hướng dẫn liên quan:

  • Cách đọc tệp Excel trong Java
  • Cách thực hiện cập nhật hàng loạt/chèn với JDBC

Hướng dẫn mã hóa Java khác:

  • Ví dụ về mã Java để chèn dữ liệu từ CSV vào cơ sở dữ liệu
  • Cách hiển thị hình ảnh từ cơ sở dữ liệu trong trang JSP với java servlet
  • Cách thực hiện Ghi nhớ mật khẩu (nhớ tôi) cho ứng dụng Web Java
  • Cách viết mã đăng nhập và đăng xuất với Java Servlet, JSP và MySQL
  • Cách viết mã Hit Counter cho ứng dụng web Java
  • 10 sai lầm phổ biến mà mỗi lập trình viên Java mới bắt đầu mắc phải
  • 10 thực tiễn tốt nhất của Java, mỗi lập trình viên Java nên biết
  • Làm thế nào để trở thành một lập trình viên giỏi? 13 nhiệm vụ bạn nên thực hành ngay bây giờ
  • Cách tính các giá trị băm MD5 và SHA trong Java
  • Ví dụ mã hóa và giải mã tệp Java


Thông tin về các Tác giả:

Hướng dẫn how read data from excel sheet and insert into database table in java? - Làm thế nào để đọc dữ liệu từ trang tính excel và chèn vào bảng cơ sở dữ liệu trong java?
Nam Ha Minh được lập trình viên Java được chứng nhận (SCJP và SCWCD). Anh bắt đầu lập trình với Java vào thời Java 1.4 và đã yêu Java kể từ đó. Kết bạn với anh ấy trên Facebook và xem video Java của anh ấy là YouTube.

Thêm bình luận

Làm thế nào để bạn đọc dữ liệu Excel và lưu trữ nó trong cơ sở dữ liệu bằng Java?

Ví dụ về việc đọc tệp tệp excel (.xls)..
nhập java.io.file ;.
nhập java.io.fileinputstream ;.
nhập java.io.ioException ;.
Nhập org.apache.poi.hssf.usermodel.hssfsheet ;.
Nhập org.apache.poi.hssf.usermodel.hssfworkbook ;.
Nhập org.apache.poi.sss.usermodel.cell ;.
Nhập org.apache.poi.sss.usermodel.formulaEvalUator ;.

Làm thế nào đọc dữ liệu từ bảng excel và chèn vào bảng cơ sở dữ liệu?

Đầu tiên, sao chép dữ liệu từ Excel, sau đó dán nó vào bảng SQL Server bằng cơ sở dữ liệu> Bảng> Chỉnh sửa tùy chọn menu 200 hàng Top. Luôn bắt đầu bằng cách sao chép và dán một hàng dữ liệu duy nhất để xác thực các loại dữ liệu.copy the data from Excel, and then paste it into the SQL Server table using the Database > Table > Edit top 200 rows menu option. Always start by copying and pasting a single row of data to validate the data types.

Làm thế nào để bạn đọc dữ liệu từ Excel và chèn vào SQL bằng Java?

TABLE_DAILY_REPORT (); Vector dataholder = đọc (tên tệp); Savetodatabase (Dataholder); } vectơ static public read (chuỗi filename) {vector cellvectorHolder = new vector (); thử {fileInputStream myInput = new FileInputStream (fileName); Poifsfilesystem myfilesystem = new poifsfilesystem (myInput); HSSFWorkbook MyWorkbook ...

Làm thế nào đọc dữ liệu từ bảng excel và chèn vào bảng cơ sở dữ liệu trong đợt mùa xuân?

Nếu bạn muốn đọc dữ liệu đầu vào của một công việc hàng loạt mùa xuân từ bảng tính Excel, bạn phải thêm các phụ thuộc của Spring Batch Excel và Apache POI vào đường dẫn lớp.Nếu bạn muốn đọc dữ liệu đầu vào của công việc hàng loạt của mình bằng cách sử dụng Spring Batch Excel và Apache POI, bạn phải sử dụng lớp poiitemreader.add Spring Batch Excel and Apache POI dependencies to the classpath. If you want to read the input data of your batch job by using Spring Batch Excel and Apache POI, you have to use the PoiItemReader class.

Làm thế nào kết nối Excel với cơ sở dữ liệu Java?

Chọn tùy chọn 'Thêm kết nối' từ menu Quản trị để mở trình hướng dẫn kết nối.Trong trình hướng dẫn kết nối, nhập tên kết nối và chọn 'Excel' từ danh sách nguồn dữ liệu.Chọn loại kết nối dựa trên việc trình điều khiển ODBC Excel của bạn) là Excel 2003 hay sớm hơn, hoặc 2007 trở lên.