Cách đọc dữ liệu từ bảng excel và chèn vào bảng cơ sở dữ liệu trong lô mùa xuân

Trong câu chuyện này, tôi sẽ giải thích cho bạn cách đọc và ghi tệp Excel với Spring Batch bằng trình đọc và ghi tùy chỉnh

Chúng ta sẽ tạo một ứng dụng khởi động Spring đơn giản trình bày cách sử dụng lô Spring với mongoDB

điều kiện tiên quyết
  • Khởi động mùa xuân 2. 4
  • maven 3. 6. 1
  • Java 8
  • Mông Cổ 4. 4
  • Apache poi 4. 1. 2
Tổng quan về lô hàng mùa xuân

Lô mùa xuân là thư viện Spring Framework xử lý lượng lớn dữ liệu mà không cần sự can thiệp của con người. Spring Batch có hỗ trợ các tệp CSV, XML, nhưng vốn dĩ không hỗ trợ các tệp XLSX. Nó không được thiết kế để sử dụng như một khung lập kế hoạch. Tuy nhiên, nó có thể được sử dụng kết hợp với khung lập lịch trình như Quartz, Control-M, v.v.

khuôn mẫu hàng loạt. https. // tài liệu. mùa xuân. io/spring-batch/docs/current/reference/html/job. html

Bạn có thể lưu trữ dữ liệu vào XLSX với sự hỗ trợ của Apache POI SXSSF API

Bắt đầu

Ví dụ, chúng ta sẽ tạo một công việc Spring Batch có thể nhập thông tin nhân viên từ tệp Excel. Tệp này chứa thông tin như tên, họ, số, địa chỉ email và bộ phận. Khi đọc thông tin nhân viên từ file excel, chúng ta đã chèn vào mongodb khi không tồn tại nhân viên

Mẫu excel file nhân viên

Tạo dự án khởi động mùa xuân và thêm các phụ thuộc sau vào pom. xml


org.springframework.boot
spring-boot-starter-batch


org.springframework.boot
spring-boot-starter-data-mongodb


org.springframework.boot
spring-boot-starter-web


org.apache.poi
poi
4.1.2


org.apache.poi
poi-ooxml
4.1.2
Cấu trúc dự án

Đây là cấu trúc dự án của chúng tôi

Để bắt đầu, chúng ta cần một lớp mô hình. Đối với hướng dẫn này, chúng tôi có một lớp mô hình Nhân viên

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors[chain = true]
@Document[collection = "employee"]
public class Employee {

@Id
private String id;

private String firstName;

private String lastName;

@NotNull
@Indexed[unique = true, direction = IndexDirection.DESCENDING]
private String number;

private String email;

private String department;

private double salary;
}

Chú thích @Document đánh dấu một lớp là một đối tượng miền mà chúng tôi muốn duy trì cơ sở dữ liệu

@Repository
public interface EmployeeRepository extends MongoRepository {
}

Apache POI là một thư viện Java cho phép đọc và ghi Microsoft Documents. Nó hỗ trợ Excel, Word, PowerPoint và cả Visio. Chúng tôi đã tạo một lớp trừu tượng chịu trách nhiệm đọc và ghi vào tệp Excel

Tạo một BatchConfiguration. java

Lớp cấu hình hàng loạt đã chú thích nó bằng @Configuration và @EnableBatchProcessing. @EnableBatchProcessing kích hoạt các tính năng Spring Batch và cung cấp cấu hình cơ sở để thiết lập các công việc hàng loạt trong lớp @Configuration

/**
* Configuration for batch
*/
@EnableBatchProcessing
@Configuration
public class BatchConfiguration {

public final JobBuilderFactory jobBuilderFactory;

public final StepBuilderFactory stepBuilderFactory;

public BatchConfiguration[JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory] {
this.jobBuilderFactory = jobBuilderFactory;
this.stepBuilderFactory = stepBuilderFactory;
}

@Bean
public JobParametersValidator jobParametersValidator[] {
return new EmployeeJobParametersValidator[];
}

@Bean
public JobParametersValidator compositeJobParametersValidator[] {
CompositeJobParametersValidator bean = new CompositeJobParametersValidator[];
bean.setValidators[Collections.singletonList[jobParametersValidator[]]];
return bean;
}

@Bean
public ItemProcessor itemProcessor[] {
return new EmployeeItemProcessor[];
}

@Bean
public ItemReader itemReader[] {
return new EmployeeItemReader[];
}

@Bean
public MongoItemWriter writer[MongoTemplate mongoTemplate] {
return new MongoItemWriterBuilder[].template[mongoTemplate].collection["employee"]
.build[];
}


/**
* Declaration step
* @return {@link Step}
*/
@Bean
public Step employeeStep[MongoItemWriter itemWriter] {
return stepBuilderFactory.get["employeeStep"]
.chunk[50]
.reader[itemReader[]]
.processor[itemProcessor[]]
.writer[itemWriter]
.build[];
}



/**
* Declaration job
* @param listener {@link JobCompletionListener}
* @return {@link Job}
*/
@Bean
public Job employeeJob[JobCompletionListener listener, Step employeeStep] {
return jobBuilderFactory.get["employeeJob"]
.incrementer[new RunIdIncrementer[]]
.listener[listener]
.flow[employeeStep]
.end[]
.validator[compositeJobParametersValidator[]]
.build[];
}

}

Employee ItemReader là class tùy chỉnh cho phép chúng ta đọc nội dung của file Excel. Nó mở rộng AbstractExcelPoi và triển khai các giao diện ItemReader và StepExecutionListener. Lớp này điền vào các trường của đối tượng Nhân viên đã tạo bằng cách sử dụng lớp EmployeeItemRowMapper

EmployeeItemProcessor. java là lớp triển khai sẽ triển khai giao diện ItemProcessor
Trong trường hợp của chúng tôi, nó có trách nhiệm kiểm tra xem mã số nhân viên đã tồn tại trong cơ sở dữ liệu hay chưa trước khi chèn. Khi kết thúc công việc, nó sẽ chèn tất cả dữ liệu không lưu được vào tệp kết quả Excel để thông báo cho người dùng.

Sau khi dữ liệu được xử lý, bean ghi sẽ lưu dữ liệu vào mongoDB

Công việc của nhân viên chúng tôi được định nghĩa như sau

Lưu ý rằng chúng tôi đã thêm bean compositeJobParametersValidator[] làm trình xác thực cho phép bạn kiểm tra xem loại tệp đầu vào của công việc có ở định dạng Excel không

Làm cách nào để đọc dữ liệu từ trang tính Excel và chèn vào bảng cơ sở dữ liệu bằng Java?

table_daily_report[];

Làm cách nào để đọc dữ liệu từ trang tính Excel và chèn vào bảng cơ sở dữ liệu trong asp net?

Tạo hàm đọc và chèn File Excel vào cơ sở dữ liệu dưới dạng. .
private void InsertExcelRecords[chuỗi FilePath]
ExcelConn[Đường dẫn tệp];
Truy vấn = chuỗi. .
OleDbCommand Ecom = new OleDbCommand[Query, Econ];
kinh tế. .
Bộ dữ liệu ds=Bộ dữ liệu mới[];
OleDbDataAdapter oda = new OleDbDataAdapter[Query, Econ];

Làm cách nào để xác thực trang tính Excel trước khi tải dữ liệu của nó lên cơ sở dữ liệu trong Java?

Cách xác thực dữ liệu trong Excel? .
Bước 1 - Chọn ô để xác thực. Chọn ô bạn muốn xác thực. .
Bước 2 - Chỉ định Tiêu chí Xác thực. .
Bước 3 - Trong Cho phép, Chọn Tiêu chí. .
Bước 4 - Chọn Điều kiện. .
Bước 5 - Nhập tin nhắn. .
Bước 6 - Thông báo lỗi tùy chỉnh. .
Bước 7 - Nhấp vào Ok

Làm cách nào để tải tệp Excel lên cơ sở dữ liệu MySQL trong Java?

Tìm hiểu cách nhập dữ liệu Excel vào cơ sở dữ liệu MySQL .
Mở tệp Excel của bạn và nhấp vào Lưu dưới dạng. .
Đăng nhập vào vỏ MySQL của bạn và tạo cơ sở dữ liệu. .
Tiếp theo, chúng ta sẽ xác định lược đồ cho bảng thuyền của mình bằng cách sử dụng lệnh CREATE TABLE. .
Chạy bảng hiển thị để xác minh rằng bảng của bạn đã được tạo

Chủ Đề