JdbcCursorItemReader ,JdbcBatchItemWriter한개의 db에서 데이터 전환
702
작성한 질문수 1
안녕하세요 JdbcCursorItemReader 와 JdbcBatchItemWriter를 이용해 기존 데이터를 변환해서 다른 테이블로 이관하는 테스트를 진행하고 있습니다. 근데 JdbcCursorItemReader 에서 select는 잘되는데 JdbcBatchItemWriter에서 insert쿼리를 날릴때 무한대기 현상이 발생하는거 같습니다.
@Bean
public Job transferDBJob(JobRepository jobRepository, Step transferBookStep){
return new JobBuilder("transferDBJob",jobRepository)
.start(transferBookStep)
.build();
}
@Bean
public Step transferBookStep(JobRepository jobRepository, PlatformTransactionManager tm,
JdbcPagingItemReader<TransSpecies> pagingSpeciesReader, ItemProcessor<TransSpecies, Species> transItemProcessor,
JdbcBatchItemWriter<Species> transItemWriter) {
return new StepBuilder("transferBookStep",jobRepository)
.<TransSpecies,Species>chunk(10,tm)
.reader(pagingSpeciesReader)
.processor(transItemProcessor)
.writer(transItemWriter)
.build();
}
@Bean
public JdbcPagingItemReader<TransSpecies> pagingSpeciesReader(DataSource dataSource,PagingQueryProvider createQueryProvider) {
return new JdbcPagingItemReaderBuilder<TransSpecies>()
.name("transSpeciesReader")
.pageSize(10)
.fetchSize(10)
.dataSource(dataSource)
.rowMapper(new BeanPropertyRowMapper<>(TransSpecies.class))
.queryProvider(createQueryProvider)
.build();
}
@Bean
public PagingQueryProvider createQueryProvider(DataSource dataSource) throws Exception {
SqlPagingQueryProviderFactoryBean queryProvider = new SqlPagingQueryProviderFactoryBean();
queryProvider.setDataSource(dataSource);
queryProvider.setSelectClause("SPECIESKEY,AUTHOR,TITLE");
queryProvider.setFromClause("FROM TRANSSPECIES");
Map<String, Order> sortKeys = new HashMap<>(1);
sortKeys.put("SPECIESKEY", Order.ASCENDING);
queryProvider.setSortKeys(sortKeys);
return queryProvider.getObject();
}
@Bean
public ItemProcessor<TransSpecies,Species> transItemProcessor(){
return transSpecies ->{
Species species = new Species();
species.setRecKey(transSpecies.getSpeciesKey());
species.setTitle(transSpecies.getTitle());
species.setAuthor(transSpecies.getAuthor());
return species;
};
}
@Bean
public JdbcBatchItemWriter<Species> transItemWriter(DataSource dataSource){
return new JdbcBatchItemWriterBuilder<Species>()
.sql("INSERT INTO SPECIES VALUES (:recKey, :author, :title)")
.beanMapped()
.dataSource(dataSource)
.build();
}현재 작성한 간단하 코드이며
로그에는 현재 이렇게 무한대기 상태에 놓이게 됩니다.
확인 부탁드립니다 ㅠㅠ
답변 1
스프링 배치 버전 질문
0
122
1
소스코드가 어디에 있나요?
0
96
2
트랜잭션 예외
0
92
1
질문이 있습니다.
0
130
2
ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문
0
125
2
여러 JOB 설정하는법
0
150
2
강의 자료 다른 방법 있을까요?
0
154
1
JobExecution과 JobExecutionContext와의 관계
0
186
2
특정 job만 실행
1
252
1
Batch 성능 질문
0
153
1
ItemReaderAdapter 종료
0
80
1
[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader
0
179
2
Spring Batch 배포 질문
0
246
2
spring batch 버전
0
236
2
retry count 관련 질문
0
172
2
StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.
0
330
2
jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)
0
235
2
Multithread step과 AsyncItemProcessor
0
203
2
job 재실행
0
251
2
bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)
0
183
1
Multi-threaded-step과 Partitioning 차이 확인
0
175
2
jdbcCursorReader, jdbcPagingReader 질문
0
146
1
step muti-thread 질문
0
111
1
itemSteam open update close 질문
0
112
1





