mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
@@ -144,7 +144,7 @@ public class Util {
|
|||||||
return column;
|
return column;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String timeZone; // 当前时区
|
public static String timeZone; // 当前时区
|
||||||
private static DateTimeZone dateTimeZone;
|
private static DateTimeZone dateTimeZone;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|||||||
@@ -113,9 +113,9 @@ public class ESSyncUtil {
|
|||||||
} else if (val instanceof java.sql.Timestamp) {
|
} else if (val instanceof java.sql.Timestamp) {
|
||||||
DateTime dateTime = new DateTime(((java.sql.Timestamp) val).getTime());
|
DateTime dateTime = new DateTime(((java.sql.Timestamp) val).getTime());
|
||||||
if (dateTime.getMillisOfSecond() != 0) {
|
if (dateTime.getMillisOfSecond() != 0) {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS" + Util.timeZone);
|
||||||
} else {
|
} else {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss" + Util.timeZone);
|
||||||
}
|
}
|
||||||
} else if (val instanceof java.sql.Date || val instanceof Date) {
|
} else if (val instanceof java.sql.Date || val instanceof Date) {
|
||||||
DateTime dateTime;
|
DateTime dateTime;
|
||||||
@@ -129,9 +129,9 @@ public class ESSyncUtil {
|
|||||||
res = dateTime.toString("yyyy-MM-dd");
|
res = dateTime.toString("yyyy-MM-dd");
|
||||||
} else {
|
} else {
|
||||||
if (dateTime.getMillisOfSecond() != 0) {
|
if (dateTime.getMillisOfSecond() != 0) {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS" + Util.timeZone);
|
||||||
} else {
|
} else {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss" + Util.timeZone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (val instanceof Long) {
|
} else if (val instanceof Long) {
|
||||||
@@ -140,9 +140,9 @@ public class ESSyncUtil {
|
|||||||
&& dateTime.getMillisOfSecond() == 0) {
|
&& dateTime.getMillisOfSecond() == 0) {
|
||||||
res = dateTime.toString("yyyy-MM-dd");
|
res = dateTime.toString("yyyy-MM-dd");
|
||||||
} else if (dateTime.getMillisOfSecond() != 0) {
|
} else if (dateTime.getMillisOfSecond() != 0) {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS" + Util.timeZone);
|
||||||
} else {
|
} else {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss" + Util.timeZone);
|
||||||
}
|
}
|
||||||
} else if (val instanceof String) {
|
} else if (val instanceof String) {
|
||||||
String v = ((String) val).trim();
|
String v = ((String) val).trim();
|
||||||
@@ -153,9 +153,9 @@ public class ESSyncUtil {
|
|||||||
if (date != null) {
|
if (date != null) {
|
||||||
DateTime dateTime = new DateTime(date);
|
DateTime dateTime = new DateTime(date);
|
||||||
if (dateTime.getMillisOfSecond() != 0) {
|
if (dateTime.getMillisOfSecond() != 0) {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS" + Util.timeZone);
|
||||||
} else {
|
} else {
|
||||||
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss" + Util.timeZone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (v.length() == 10 && v.charAt(4) == '-' && v.charAt(7) == '-') {
|
} else if (v.length() == 10 && v.charAt(4) == '-' && v.charAt(7) == '-') {
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ public class RdbEtlService {
|
|||||||
StringBuilder insertSql = new StringBuilder();
|
StringBuilder insertSql = new StringBuilder();
|
||||||
insertSql.append("INSERT INTO ").append(SyncUtil.getDbTableName(dbMapping)).append(" (");
|
insertSql.append("INSERT INTO ").append(SyncUtil.getDbTableName(dbMapping)).append(" (");
|
||||||
columnsMap
|
columnsMap
|
||||||
.forEach((targetColumnName, srcColumnName) -> insertSql.append(targetColumnName).append(","));
|
.forEach((targetColumnName, srcColumnName) -> insertSql.append(targetColumnName).append(","));
|
||||||
|
|
||||||
int len = insertSql.length();
|
int len = insertSql.length();
|
||||||
insertSql.delete(len - 1, len).append(") VALUES (");
|
insertSql.delete(len - 1, len).append(") VALUES (");
|
||||||
@@ -213,16 +213,18 @@ public class RdbEtlService {
|
|||||||
len = insertSql.length();
|
len = insertSql.length();
|
||||||
insertSql.delete(len - 1, len).append(")");
|
insertSql.delete(len - 1, len).append(")");
|
||||||
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);
|
||||||
|
|
||||||
while (rs.next()) {
|
while (rs.next()) {
|
||||||
|
completed = false;
|
||||||
|
|
||||||
pstmt.clearParameters();
|
pstmt.clearParameters();
|
||||||
|
|
||||||
// 删除数据
|
// 删除数据
|
||||||
Map<String, Object> values = new LinkedHashMap<>();
|
Map<String, Object> values = new LinkedHashMap<>();
|
||||||
StringBuilder deleteSql = new StringBuilder(
|
StringBuilder deleteSql = new StringBuilder(
|
||||||
"DELETE FROM " + SyncUtil.getDbTableName(dbMapping) + " WHERE ");
|
"DELETE FROM " + SyncUtil.getDbTableName(dbMapping) + " WHERE ");
|
||||||
appendCondition(dbMapping, deleteSql, values, rs);
|
appendCondition(dbMapping, deleteSql, values, rs);
|
||||||
try (PreparedStatement pstmt2 = connTarget.prepareStatement(deleteSql.toString())) {
|
try (PreparedStatement pstmt2 = connTarget.prepareStatement(deleteSql.toString())) {
|
||||||
int k = 1;
|
int k = 1;
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ public class CanalKafkaProducer implements CanalMQProducer {
|
|||||||
properties.put("max.request.size", kafkaProperties.getMaxRequestSize());
|
properties.put("max.request.size", kafkaProperties.getMaxRequestSize());
|
||||||
properties.put("buffer.memory", kafkaProperties.getBufferMemory());
|
properties.put("buffer.memory", kafkaProperties.getBufferMemory());
|
||||||
properties.put("key.serializer", StringSerializer.class.getName());
|
properties.put("key.serializer", StringSerializer.class.getName());
|
||||||
|
properties.put("max.in.flight.requests.per.connection", 1);
|
||||||
|
|
||||||
if (!kafkaProperties.getProperties().isEmpty()) {
|
if (!kafkaProperties.getProperties().isEmpty()) {
|
||||||
properties.putAll(kafkaProperties.getProperties());
|
properties.putAll(kafkaProperties.getProperties());
|
||||||
@@ -160,7 +161,7 @@ public class CanalKafkaProducer implements CanalMQProducer {
|
|||||||
|
|
||||||
if (record != null) {
|
if (record != null) {
|
||||||
if (kafkaProperties.getTransaction()) {
|
if (kafkaProperties.getTransaction()) {
|
||||||
producer.send(record);
|
producer.send(record).get();
|
||||||
} else {
|
} else {
|
||||||
producer.send(record).get();
|
producer.send(record).get();
|
||||||
}
|
}
|
||||||
@@ -212,7 +213,7 @@ public class CanalKafkaProducer implements CanalMQProducer {
|
|||||||
if (kafkaProperties.getTransaction()) {
|
if (kafkaProperties.getTransaction()) {
|
||||||
producer2.send(record);
|
producer2.send(record);
|
||||||
} else {
|
} else {
|
||||||
producer2.send(record).get();
|
producer2.send(record);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user