From 279d503cf4e3dd9f420a9e47a801dd49650779d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=B0=E9=94=85=E4=B8=8D=E6=98=AF=E9=94=85?= <1105568074@qq.com> Date: Wed, 16 Nov 2022 10:24:56 +0800 Subject: [PATCH] =?UTF-8?q?fix=5FETL=E5=90=8C=E6=AD=A5mysql=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E5=AD=97=E6=8A=A5=E9=94=99=20(#4346)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: foleyang --- .../canal/client/adapter/rdb/service/RdbEtlService.java | 8 ++++++-- .../otter/canal/client/adapter/rdb/support/SyncUtil.java | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) 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 d1a511bd..a939a037 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 @@ -58,6 +58,7 @@ public class RdbEtlService extends AbstractEtlService { Map columnsMap = new LinkedHashMap<>(); Map columnType = new LinkedHashMap<>(); DruidDataSource dataSource = (DruidDataSource) srcDS; + String backtick = SyncUtil.getBacktickByDbType(dataSource.getDbType()); Util.sqlRS(targetDS, "SELECT * FROM " + SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()) + " LIMIT 1 ", @@ -90,8 +91,10 @@ public class RdbEtlService extends AbstractEtlService { insertSql.append("INSERT INTO ") .append(SyncUtil.getDbTableName(dbMapping, dataSource.getDbType())) .append(" ("); - columnsMap - .forEach((targetColumnName, srcColumnName) -> insertSql.append(targetColumnName).append(",")); + columnsMap.forEach((targetColumnName, srcColumnName) -> insertSql.append(backtick) + .append(targetColumnName) + .append(backtick) + .append(",")); int len = insertSql.length(); insertSql.delete(len - 1, len).append(") VALUES ("); @@ -101,6 +104,7 @@ public class RdbEtlService extends AbstractEtlService { } len = insertSql.length(); insertSql.delete(len - 1, len).append(")"); + logger.info("executeSqlImport sql:{}",insertSql.toString()); try (Connection connTarget = targetDS.getConnection(); PreparedStatement pstmt = connTarget.prepareStatement(insertSql.toString())) { connTarget.setAutoCommit(false); 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 c5fb4d5b..06fdf988 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,6 +281,7 @@ public class SyncUtil { // 只有当dbType为MySQL/MariaDB或OceanBase时返回反引号 switch (dbType) { case mysql: + return "`"; case mariadb: case oceanbase: return "`";