Salut, j'utilise le lot de printemps pour la première fois. Mon cas d'utilisation est que je dois charger des données d'oracle db dans un fichier csv en utilisant Spring Boot et Spring Data. Je rencontre des difficultés pour configurer oracle db dans ItemReader. Est-ce que quelqu'un peut m'aider.Chargement des données dans un fichier CSV à partir d'Oracle Database en utilisant Spring Batch, boot et Spring Jpa
Voici mon code
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
public PersonAcctRepository personAcctRepository;
@Bean
public ItemWriter<CustomerInsr> writer(){
FlatFileItemWriter<CustomerInsr> writer = new FlatFileItemWriter<CustomerInsr>();
String exportFileHeader = "FIRST_NAM, MIDDLE_NAM, LAST_NAM";
StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
writer.setHeaderCallback(headerWriter);
writer.setResource(new ClassPathResource("sample-data.csv"));
LineAggregator<CustomerInsr> lineAgg = createCustomerInsrAgg();
writer.setLineAggregator(lineAgg);
return writer;
}
@Bean
public LineAggregator<CustomerInsr> createCustomerInsrAgg(){
DelimitedLineAggregator<CaresCustomerInsr> deliAgg = new DelimitedLineAggregator<CustomerInsr>();
deliAgg.setDelimiter(",");
FieldExtractor<CustomerInsr> fieldExtractor = createCustomerInsrExtractor();
deliAgg.setFieldExtractor(fieldExtractor);
return deliAgg;
}
@Bean
public FieldExtractor<CustomerInsr> createCustomerInsrExtractor(){
BeanWrapperFieldExtractor<CustomerInsr> fieldExtractor = new BeanWrapperFieldExtractor<CustomerInsr>();
fieldExtractor.setNames(new String []{"firstName", "middleName", "lastName"});
return fieldExtractor;
}
@Bean
public ItemReader<CustomerInsr> reader(){
RepositoryItemReader<CustomerInsr> reader = new RepositoryItemReader<CustomerInsr>();
reader.setRepository(personAcctRepository);
reader.setMethodName("findAll");
return reader;
}
@Bean
public Job job(){
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.flow(step())
.end()
.build();
}
@Bean
public Step step(){
return stepBuilderFactory.get("step")
.<CustomerInsr, CustomerInsr> chunk(10)
.reader(reader())
.writer(writer())
.build();
}
}
Pouvez-vous élaborer, ce qui manque/faux. trace de la pile? –
J'essaie de lire des données à partir d'oracle db, j'utilise des référentiels de données Spring (référentiel JPA, en utilisant la méthode findAll()). Je donne les propriétés de la base de données dans le fichier application.properties. Comment dois-je configurer la méthode (findAll()) et la source de données dans ItemReader –