2016-10-26 8 views
0

У меня есть файл csv, который мне нужно обработать и вставить данные в базу данных, что очень простое задание, которое я сделал, , но теперь моя проблема перед вставкой данных в базе данных мне нужно проверить, есть ли первая строка файла csv с заголовком или нет, если не отменить файл, например первая линия должна быть HDR | DEPT | ДАТА последняя строка - TLR | NumberOfRows если это первая и последняя строка не существует игнорировать этот файл,Как проверить заголовок/порт для файла csv перед обработкой в ​​Spring Batch

+0

Вы смотрели на http://stackoverflow.com/questions/18517983/spring-batch-validate-header-lines- in-input-csv-file-and-skip-the-file-if-it-i? – Asoub

ответ

1

Просто напишите TaskletStep в качестве первого шага. Откройте файл, прочитайте и проверьте первую строку, затем прочитайте строку за строкой, пока не найдете последнюю строку, проверьте ее.

Выбросьте соответствующее исключение, если первая и последняя строка не соответствуют ожиданиям.

Вы не можете просто использовать обратные вызовы заголовка и нижнего колонтитула SpringBatch FlatFileItemReader, так как обратный вызов нижнего колонтитула вызывается после того, как все файлы обработаны.

EDIT: добавлен пример

Что-то вроде этого:

@Autowired 
private JobBuilderFactory jobBuilderFactory; 

@Autowired 
private StepBuilderFactory stepBuilderFactory; 

@Bean 
public Job job() throws Exception { 
    return this.jobBuilderFactory.get(JOB_NAME) 
       .start(validateStep()) 
       .next(yourNormalStepGoesHere()) 
       .build(); 
} 

@Bean 
protected Step validateStep() throws Exception { 
    return this.stepBuilderFactory.get("SimpleTest_step1_Step") 
    .tasklet(tasklet()) 
    .build(); 
} 

@Bean 
protected Tasklet tasklet() { 
    return (contribution, context) -> { 
      // open file 
      // read first line 
      // check first line 
      // read lines until last line is read 
      // check last line 
      // close file 
      return RepeatStatus.FINISHED; 
    }; 
} 
+0

Прошу вас привести пример или образец, потому что я новичок в Spring, только начал учиться и реализовывать, спасибо заранее, –

+0

Я добавил пример, посмотрю –