Пример Spring Batch - файл CSV в базу данных MySQL

Пример Spring Batch - CSV-файл в базу данных MySQL

В этом руководстве мы покажем вам, как настроить задание Spring Batch для чтения данных из файла CSV в базу данных.

Используемые инструменты и библиотеки:

  1. Maven 3

  2. Затмение 4.2

  3. JDK 1.6

  4. Spring Core 3.2.2.RELEASE

  5. Spring Batch 2.2.0.RELEASE

  6. MySQL Java Driver 5.1.25

1. Java проект

Создать проект Java с Maven

$ mvn archetype:generate -DgroupId=com.example -DartifactId=SpringBatchExample
  -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Преобразовать в проект Eclipse и импортировать его в Eclipse IDE.

$ cd SpringBatchExample/
$ mvn eclipse:eclipse

2. Зависимости проекта

Объявляет все зависимости проекта вpom.xml.

pom.xml


    4.0.0
    com.example
    SpringBatchExample
    jar
    1.0-SNAPSHOT
    SpringBatchExample
    http://maven.apache.org

    
        1.6
        3.2.2.RELEASE
        2.2.0.RELEASE
        5.1.25
    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        

        
        
            org.springframework.batch
            spring-batch-core
            ${spring.batch.version}
        
        
            org.springframework.batch
            spring-batch-infrastructure
            ${spring.batch.version}
        

        
        
            mysql
            mysql-connector-java
            ${mysql.driver.version}
        

    
    
        spring-batch
        
          
            org.apache.maven.plugins
            maven-eclipse-plugin
            2.9
            
                true
                false
            
          
          
            org.apache.maven.plugins
            maven-compiler-plugin
            2.3.2
            
                ${jdk.version}
                ${jdk.version}
            
          
        
    

3. Структура каталога проекта

Просмотрите окончательную структуру проекта.

spring-batch-csv-database-project-structure

4. CSV файл

Это файл csv в папке ресурсов.

report.csv

Date,Impressions,Clicks,Earning
6/1/13,"139,237",37,227.21
6/2/13,"149,582",55,234.71
6/3/13,"457,425",132,211.48
6/4/13,"466,870",141,298.40
6/5/13,"472,385",194,281.35
......

5. База данных MySQL

Определяет bean-компонент «dataSource» для базы данных MySQL. jdbc:initialize-database используется для автоматического создания таблиц метаданных, Spring Batch нужен для хранения деталей задания.

resources/spring/batch/config/database.xml



  
  
    
    
    
    
  

  

  
  
    
    
  

6. Настройка основной партии пружин

ОпределяетjobRepository иjobLauncher.

resources/spring/batch/config/context.xml



  
  
    
    
    
  

  
  

  
    
  

7. Весенние партии рабочих мест

Это основной XML-файл для настройки пакетного задания Spring. Этот файлjob-report.xml определяет задание на чтение файлаreport.csv, сопоставление его с простым pojoreport и запись данных в базу данных MySQL.

Прочитайте комментарий, он должен быть понятен. Кстати, не забудьте создать таблицу «RAW_REPORT» вручную.

resources/spring/batch/jobs/job-report.xml



  

  
    
      
        
        
      
    
  

  

    
    

    
        
          
          
                
                
            
          
          
                 
                 
              
              
                
              
          

          
      

  

  
    
    
      
            
      
    
    
    
        
    
  

com/example/model/Report.java

package com.example.model;

public class Report {

    private String Date;
    private String Impressions;
    private String Clicks;
    private String Earning;

    //getter and setter methods


}

Note
Для подробного объяснения обратитесь к этомуSpring batch references.

8. Запустить его

Загружает все и запускаетjobLauncher. Это самый простой способ запустить и протестировать его, но в реальной жизни вам может потребоваться запустить его с помощью фреймворков планировщика, таких как Spring task, Quartz или системного планировщика, такого как команда «cron» (я покажу вам в следующих руководствах).

com/example/App.java

package com.example;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
  public static void main(String[] args) {

    String[] springConfig  =
        {   "spring/batch/config/database.xml",
            "spring/batch/config/context.xml",
            "spring/batch/jobs/job-report.xml"
        };

    ApplicationContext context =
        new ClassPathXmlApplicationContext(springConfig);

    JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
    Job job = (Job) context.getBean("reportJob");

    try {

        JobExecution execution = jobLauncher.run(job, new JobParameters());
        System.out.println("Exit Status : " + execution.getStatus());

    } catch (Exception e) {
        e.printStackTrace();
    }

    System.out.println("Done");

  }
}

Выход. Создаются таблицы метаданных Spring Batch, и содержимоеreport.cvs вставляется в таблицу базы данных «RAW_REPORT».

spring-batch-cvs-database-data

Готово.

Скачать исходный код

Скачать -SpringBatch-CSV-Database-Example.zip (18 кб)