删除最大值

This commit is contained in:
hekaiyu 2025-11-21 16:17:01 +08:00
parent e663491aa0
commit a07a72854e

View File

@ -163,6 +163,13 @@ public class SyncDataJob implements Job {
Date currentEnd = addDays(currentStart, syncCount); Date currentEnd = addDays(currentStart, syncCount);
if (currentEnd.after(dateRange.getMaxDate())) { if (currentEnd.after(dateRange.getMaxDate())) {
currentEnd = dateRange.getMaxDate(); currentEnd = dateRange.getMaxDate();
StringBuilder whereClause = new StringBuilder();
whereClause.append("TO_CHAR(")
.append(stasSyncStrategy.getColumnName())
.append(", 'YYYY-MM-DD HH24:MI:SS') = '")
.append(sdf.format(currentEnd))
.append("'");
deleteByEquals(targetConn, stasSyncStrategy, sourceDbType, whereClause.toString());
} }
// 根据数据库类型构建不同的日期条件 // 根据数据库类型构建不同的日期条件
@ -210,6 +217,12 @@ public class SyncDataJob implements Job {
long currentEnd = currentStart + syncCount; long currentEnd = currentStart + syncCount;
if (currentEnd > idRange.getMaxId()) { if (currentEnd > idRange.getMaxId()) {
currentEnd = idRange.getMaxId(); currentEnd = idRange.getMaxId();
StringBuilder whereClause = new StringBuilder();
whereClause.append(stasSyncStrategy.getColumnName())
.append(" = '")
.append(currentEnd)
.append("'");
deleteByEquals(targetConn, stasSyncStrategy, sourceDbType, whereClause.toString());
} }
String whereClause = stasSyncStrategy.getColumnName() + " BETWEEN " + currentStart + " AND " + currentEnd; String whereClause = stasSyncStrategy.getColumnName() + " BETWEEN " + currentStart + " AND " + currentEnd;
@ -231,6 +244,25 @@ public class SyncDataJob implements Job {
} }
} }
/**
* 根据日期等于或ID等于删除数据使用yyyy-MM-dd格式比较
*/
public int deleteByEquals(Connection conn, StasSyncStrategy stasSyncStrategy, Integer dbType, String whereClause) throws SQLException {
String sql;
// 构建完整的SQL语句
if (SourceDataTypeEnum.ORACLE.getKey().equals(dbType)) {
sql = "DELETE FROM \"" + stasSyncStrategy.getSourceOwner().toUpperCase() + "\".\"" +
stasSyncStrategy.getTableName() + "\" WHERE " + whereClause;
} else {
sql = "DELETE FROM \"" + stasSyncStrategy.getSourceOwner().toLowerCase() + "\".\"" +
stasSyncStrategy.getTableName() + "\" WHERE " + whereClause;
}
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
return pstmt.executeUpdate();
}
}
/** /**
* 获取表的日期范围 * 获取表的日期范围
*/ */