我有一个带有自动递增整数主键的大型数据库表,我正在使用Spring Batch每天创建表的摘录以供其他系统使用。
我正在使用持久保存前一个提取中的最高id的方法来设置下一个提取的起始点(即在sql中,其中id> last_id_extracted)。我目前正在使用JDBC到使用普通旧Java的next_id表。
使用Spring Batch处理这种提取边界是否有更好的方法。据推测,这是批处理中非常常见的情况,Spring Batch可以提供帮助吗?
由于
答案 0 :(得分:3)
您的方法仅适用于您的数据可能发生的狭隘意义。它不会考虑现有数据的删除和修改。
为了使其更健壮,添加另一个表作为Extract Status,将数据表的记录ID作为外键。如果上载记录,则“提取状态”表应具有“上次导出日期戳”。然后,您可以实施以下规则:
1)如果Exp Stat中没有相应的行,则导出 2)如果最后更新了>最后导出,导出它 3)如果它存在于Exp Status表中但不存在于Data Table中,则向消费者发送删除消息。