diff --git a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbEtlService.java b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbEtlService.java index a939a037..18a73404 100644 --- a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbEtlService.java +++ b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbEtlService.java @@ -91,10 +91,8 @@ public class RdbEtlService extends AbstractEtlService { insertSql.append("INSERT INTO ") .append(SyncUtil.getDbTableName(dbMapping, dataSource.getDbType())) .append(" ("); - columnsMap.forEach((targetColumnName, srcColumnName) -> insertSql.append(backtick) - .append(targetColumnName) - .append(backtick) - .append(",")); + columnsMap + .forEach((targetColumnName, srcColumnName) -> insertSql.append(backtick).append(targetColumnName).append(backtick).append(",")); int len = insertSql.length(); insertSql.delete(len - 1, len).append(") VALUES ("); @@ -118,7 +116,7 @@ public class RdbEtlService extends AbstractEtlService { Map pkVal = new LinkedHashMap<>(); StringBuilder deleteSql = new StringBuilder( "DELETE FROM " + SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()) + " WHERE "); - appendCondition(dbMapping, deleteSql, pkVal, rs); + appendCondition(dbMapping, deleteSql, pkVal, rs, backtick); try (PreparedStatement pstmt2 = connTarget.prepareStatement(deleteSql.toString())) { int k = 1; for (Object val : pkVal.values()) { @@ -136,7 +134,6 @@ public class RdbEtlService extends AbstractEtlService { } Integer type = columnType.get(targetClolumnName.toLowerCase()); - Object value = rs.getObject(srcColumnName); if (value != null) { SyncUtil.setPStmt(type, pstmt, value, i); @@ -184,7 +181,7 @@ public class RdbEtlService extends AbstractEtlService { * 拼接目标表主键where条件 */ private static void appendCondition(DbMapping dbMapping, StringBuilder sql, Map values, - ResultSet rs) throws SQLException { + ResultSet rs, String backtick) throws SQLException { // 拼接主键 for (Map.Entry entry : dbMapping.getTargetPk().entrySet()) { String targetColumnName = entry.getKey(); @@ -192,7 +189,7 @@ public class RdbEtlService extends AbstractEtlService { if (srcColumnName == null) { srcColumnName = targetColumnName; } - sql.append(targetColumnName).append("=? AND "); + sql.append(backtick).append(targetColumnName).append(backtick).append("=? AND "); values.put(targetColumnName, rs.getObject(srcColumnName)); } int len = sql.length(); diff --git a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java index 06fdf988..c5fb4d5b 100644 --- a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java +++ b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java @@ -281,7 +281,6 @@ public class SyncUtil { // 只有当dbType为MySQL/MariaDB或OceanBase时返回反引号 switch (dbType) { case mysql: - return "`"; case mariadb: case oceanbase: return "`";