mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fix_ETL同步mysql关键字报错 (#4346)
Co-authored-by: foleyang <foleyang@cogobuy.com>
This commit is contained in:
@@ -58,6 +58,7 @@ public class RdbEtlService extends AbstractEtlService {
|
|||||||
Map<String, String> columnsMap = new LinkedHashMap<>();
|
Map<String, String> columnsMap = new LinkedHashMap<>();
|
||||||
Map<String, Integer> columnType = new LinkedHashMap<>();
|
Map<String, Integer> columnType = new LinkedHashMap<>();
|
||||||
DruidDataSource dataSource = (DruidDataSource) srcDS;
|
DruidDataSource dataSource = (DruidDataSource) srcDS;
|
||||||
|
String backtick = SyncUtil.getBacktickByDbType(dataSource.getDbType());
|
||||||
|
|
||||||
Util.sqlRS(targetDS,
|
Util.sqlRS(targetDS,
|
||||||
"SELECT * FROM " + SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()) + " LIMIT 1 ",
|
"SELECT * FROM " + SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()) + " LIMIT 1 ",
|
||||||
@@ -90,8 +91,10 @@ public class RdbEtlService extends AbstractEtlService {
|
|||||||
insertSql.append("INSERT INTO ")
|
insertSql.append("INSERT INTO ")
|
||||||
.append(SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()))
|
.append(SyncUtil.getDbTableName(dbMapping, dataSource.getDbType()))
|
||||||
.append(" (");
|
.append(" (");
|
||||||
columnsMap
|
columnsMap.forEach((targetColumnName, srcColumnName) -> insertSql.append(backtick)
|
||||||
.forEach((targetColumnName, srcColumnName) -> insertSql.append(targetColumnName).append(","));
|
.append(targetColumnName)
|
||||||
|
.append(backtick)
|
||||||
|
.append(","));
|
||||||
|
|
||||||
int len = insertSql.length();
|
int len = insertSql.length();
|
||||||
insertSql.delete(len - 1, len).append(") VALUES (");
|
insertSql.delete(len - 1, len).append(") VALUES (");
|
||||||
@@ -101,6 +104,7 @@ public class RdbEtlService extends AbstractEtlService {
|
|||||||
}
|
}
|
||||||
len = insertSql.length();
|
len = insertSql.length();
|
||||||
insertSql.delete(len - 1, len).append(")");
|
insertSql.delete(len - 1, len).append(")");
|
||||||
|
logger.info("executeSqlImport sql:{}",insertSql.toString());
|
||||||
try (Connection connTarget = targetDS.getConnection();
|
try (Connection connTarget = targetDS.getConnection();
|
||||||
PreparedStatement pstmt = connTarget.prepareStatement(insertSql.toString())) {
|
PreparedStatement pstmt = connTarget.prepareStatement(insertSql.toString())) {
|
||||||
connTarget.setAutoCommit(false);
|
connTarget.setAutoCommit(false);
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ public class SyncUtil {
|
|||||||
// 只有当dbType为MySQL/MariaDB或OceanBase时返回反引号
|
// 只有当dbType为MySQL/MariaDB或OceanBase时返回反引号
|
||||||
switch (dbType) {
|
switch (dbType) {
|
||||||
case mysql:
|
case mysql:
|
||||||
|
return "`";
|
||||||
case mariadb:
|
case mariadb:
|
||||||
case oceanbase:
|
case oceanbase:
|
||||||
return "`";
|
return "`";
|
||||||
|
|||||||
Reference in New Issue
Block a user