Как установить максимальное значение в Spring Batch Reader? - PullRequest
0 голосов
/ 12 июня 2019

Я должен извлечь 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

У кого-нибудь есть предложения по этому поводу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...