- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Spring Batch 来做数据迁移工作。由于数据很多,所以我决定使用JdbcPagingItemReader来按页读取数据。以下是我如何定义读者:
private JdbcPagingItemReader<Map<String, Object>> buildItemReader(final DataSource dataSource, String tableName,
String tenant){
String tenantName = tenantHelper.determineTenant(tableName);
Map<String, Object> sqlParameterValues = new HashMap<>();
sqlParameterValues.put("tableName", tableName);
sqlParameterValues.put("tenantName", tenantName);
sqlParameterValues.put("tenant", tenant);
JdbcPagingItemReader<Map<String, Object>> itemReader = new JdbcPagingItemReader<>();
itemReader.setDataSource(dataSource);
itemReader.setPageSize(2);
itemReader.setFetchSize(2);
itemReader.setQueryProvider(generateSqlPagingQueryProvider(tableName,tenantName,tenant));
//itemReader.setParameterValues(sqlParameterValues);
itemReader.setRowMapper(new ColumnMapRowMapper());
try {
itemReader.afterPropertiesSet();
} catch (Exception e) {
e.printStackTrace();
}
return itemReader;
}
private PostgresPagingQueryProvider generateSqlPagingQueryProvider(String tableName, String tenantName,
String tenant) {
PostgresPagingQueryProvider provider = new PostgresPagingQueryProvider();
Map<String, Order> sortKeys = new LinkedHashMap<>();
String sortKey = getSortKeyBytable(tableName);
sortKeys.put(sortKey, Order.ASCENDING);
provider.setSelectClause("select *");
provider.setFromClause("from " + tableName);
provider.setWhereClause("where " + tenantName + " ='" + tenant + "'");
provider.setSortKeys(sortKeys);
return provider;
}
我指定的排序键是表中的主键,它是一个字符串。但分页没有按预期工作。但它不会抛出任何错误,它只是读取所有数据。
在Spring Batch文档中,提供了一个使用int类型id作为排序关键字的示例,我想知道Spring Batch分页读取是否只支持int类型排序关键字?并且不能支持字符串排序键?
这是 Spring Batch 的限制吗?
最佳答案
这不是 Spring Batch 的限制。这就是数据库的工作原理。它根据字符串的 ascii 值对字符串进行排序。
关于java - Spring Batch JdbcPagingItemReader 分页不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369572/
我面临的问题是记录从查询和分页配置返回,我给出了不正确的记录。分页配置不正确。 分页返回较少的记录。 查询相当于分页配置 select * from SOME_TABLE where CLIENT_F
我使用 Spring Batch 来做数据迁移工作。由于数据很多,所以我决定使用JdbcPagingItemReader来按页读取数据。以下是我如何定义读者: private JdbcPagingIt
我正在开发一款从 Oracle 数据库中提取记录然后导出为单个表格文件的应用程序。 但是,当我尝试使用 JdbcPagingItemReader 从数据库中读取数据并写入文件时,我只获得了 pageS
我正在运行 Spring Batch 并使用 JdbcPagingItemReader .使用示例配置: 我收到与以下相关的错误: Column 'id' in order clause
我需要扫描数据库中的某些实体并每隔 n 分钟更新一次过期(“isexpired”)标志。在此之后,我会将整个实体作为 json 发布到指定为同一实体的属性的 url。 此代码运行批处理作业并更新数据库
我正在尝试读取包含数百万条记录的数据库表,因此我正在使用 JdbcPagingItemReader。 但是,我现在处于测试阶段,我正在尝试限制使用 JdbcPagingItemReader 可以读取的
我需要使用 Spring Batch 中的 ItemReader 访问一些 SQL 数据。我以为JdbcPagingItemReader/PagingQueryProvider将是完美的选择。 我从中
我们有一个带有 block 处理的 Spring 批处理应用程序,它从数据库中读取记录,处理它们并调用服务/执行一些插入/更新数据库中的一些表作为编写器的一部分。 JDBCPagingItemRead
我已经使用注释在 Spring Boot 中实现了批处理过程,它为我提供了服务。我正在使用 SimpleAsyncTaskExecutor 以及读取器、处理器和写入器从数据库读取并在进程中进行验证,然
为 JdbcPagingItemReader 查询设置自定义参数的最佳方法是什么? 我的自定义JdbcPagingItemReader实现: public class CustomItemReader
该表有超过2亿条记录,但我需要限制选择前500万条记录。我已经尝试使用 jdbcCursorItemReader,它需要大约 2-3 小时来选择并使用单步逐 block 处理将其写入 csv 文件,所
我是一名优秀的程序员,十分优秀!