Я должен извлечь 20 КБ строк из моей БД.Я не знаю почему, но я могу получить только 2 КБ (1 КБ на IJ_COD, который является моим ПК). Я подумал изменить размер страницы, но это не имеет никакого смысла, потому что у меня есть другие устройства чтения и записи с той же конфигурацией (более простой запрос), который без проблем извлекает 300 тыс. строк.
@Bean("trackReader")
@JobScope
public ItemReader<HappyFridayTrackUser> trackReader() throws Exception {
JdbcPagingItemReader<HappyFridayTrackUser> databaseReader = new JdbcPagingItemReader<HappyFridayTrackUser>();
final SqlPagingQueryProviderFactoryBean sqlPagingQuery = new SqlPagingQueryProviderFactoryBean();
sqlPagingQuery.setDataSource(dataSource);
sqlPagingQuery.setSelectClause("select T.ij_cod, T.creation_date, U.msisdn, u.flag_master, T.cd_user, P.title ");
sqlPagingQuery.setFromClause("from SJ4_VODAFONE_BUSINESS.VODA_HAPPY_MONDAY_TRACK T, SJ4_VODAFONE_BUSINESS.USERS U, sj4_vodafone_business.promo_catalog P ");
sqlPagingQuery.setWhereClause("where p.ij_cod = t.ij_cod and t.cd_user = u.cd_user and t.ij_cod in( "
+ "select IJ_COD "
+ "from SJ4_VODAFONE_BUSINESS.PROMO_CATALOG "
+ "where CAT_LEVEL_1 = 'monday' and PROMO_ID like 'MONDAY_%' "
+ "and END_DATE >trunc((sysdate -6), 'DD') "
+ "and END_DATE <= trunc((sysdate),'DD'))");
sqlPagingQuery.setSortKey("ij_cod");
databaseReader.setQueryProvider(sqlPagingQuery.getObject());
databaseReader.setDataSource(dataSource);
databaseReader.setPageSize(1000);
databaseReader.setRowMapper(new BeanPropertyRowMapper<HappyFridayTrackUser>(HappyFridayTrackUser.class));
return databaseReader;
}//close trackReader
@Bean("trackWriter")
@StepScope
public FlatFileItemWriter<HappyFridayTrackUser> trackWriter(){
LocalDate localDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-LLLL-yyyy");
String formattedString = localDate.format(formatter);
Resource outputResource = new FileSystemResource(pathExportTrack + formattedString + ".csv");
FlatFileItemWriter<HappyFridayTrackUser> writer = new FlatFileItemWriter<>();
writer.setResource(outputResource);
writer.setAppendAllowed(true);
writer.setLineAggregator(new DelimitedLineAggregator<HappyFridayTrackUser>() {
{
setDelimiter("|");
setFieldExtractor(new BeanWrapperFieldExtractor<HappyFridayTrackUser>() {
{
setNames(new String[] {"ijCod", "creationDate", "msisdn",
"flagMaster", "cdUser", "title"});
}
});
}
});
return writer;
}//close trackWriter
У кого-нибудь есть предложения по этому поводу?