|
@@ -12,7 +12,6 @@ import javax.sql.DataSource;
|
|
|
|
|
|
import org.apache.commons.codec.binary.Base64;
|
|
|
import org.joda.time.DateTime;
|
|
|
-import org.joda.time.DateTimeZone;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
@@ -21,6 +20,7 @@ import com.alibaba.otter.canal.client.adapter.es.config.ESSyncConfig.ESMapping;
|
|
|
import com.alibaba.otter.canal.client.adapter.es.config.SchemaItem;
|
|
|
import com.alibaba.otter.canal.client.adapter.es.config.SchemaItem.ColumnItem;
|
|
|
import com.alibaba.otter.canal.client.adapter.es.config.SchemaItem.TableItem;
|
|
|
+import com.alibaba.otter.canal.client.adapter.support.Util;
|
|
|
|
|
|
/**
|
|
|
* ES 同步工具同类
|
|
@@ -104,14 +104,14 @@ public class ESSyncUtil {
|
|
|
}
|
|
|
} else if ("date".equals(esType)) {
|
|
|
if (val instanceof java.sql.Time) {
|
|
|
- DateTime dateTime = new DateTime(((java.sql.Time) val).getTime(), DateTimeZone.forID("+08:00"));
|
|
|
+ DateTime dateTime = new DateTime(((java.sql.Time) val).getTime());
|
|
|
if (dateTime.getMillisOfSecond() != 0) {
|
|
|
res = dateTime.toString("HH:mm:ss.SSS");
|
|
|
} else {
|
|
|
res = dateTime.toString("HH:mm:ss");
|
|
|
}
|
|
|
} else if (val instanceof java.sql.Timestamp) {
|
|
|
- DateTime dateTime = new DateTime(((java.sql.Timestamp) val).getTime(), DateTimeZone.forID("+08:00"));
|
|
|
+ DateTime dateTime = new DateTime(((java.sql.Timestamp) val).getTime());
|
|
|
if (dateTime.getMillisOfSecond() != 0) {
|
|
|
res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
|
|
|
} else {
|
|
@@ -120,9 +120,9 @@ public class ESSyncUtil {
|
|
|
} else if (val instanceof java.sql.Date || val instanceof Date) {
|
|
|
DateTime dateTime;
|
|
|
if (val instanceof java.sql.Date) {
|
|
|
- dateTime = new DateTime(((java.sql.Date) val).getTime(), DateTimeZone.forID("+08:00"));
|
|
|
+ dateTime = new DateTime(((java.sql.Date) val).getTime());
|
|
|
} else {
|
|
|
- dateTime = new DateTime(((Date) val).getTime(), DateTimeZone.forID("+08:00"));
|
|
|
+ dateTime = new DateTime(((Date) val).getTime());
|
|
|
}
|
|
|
if (dateTime.getHourOfDay() == 0 && dateTime.getMinuteOfHour() == 0 && dateTime.getSecondOfMinute() == 0
|
|
|
&& dateTime.getMillisOfSecond() == 0) {
|
|
@@ -135,7 +135,7 @@ public class ESSyncUtil {
|
|
|
}
|
|
|
}
|
|
|
} else if (val instanceof Long) {
|
|
|
- DateTime dateTime = new DateTime(((Long) val).longValue(), DateTimeZone.forID("+08:00"));
|
|
|
+ DateTime dateTime = new DateTime(((Long) val).longValue());
|
|
|
if (dateTime.getHourOfDay() == 0 && dateTime.getMinuteOfHour() == 0 && dateTime.getSecondOfMinute() == 0
|
|
|
&& dateTime.getMillisOfSecond() == 0) {
|
|
|
res = dateTime.toString("yyyy-MM-dd");
|
|
@@ -149,15 +149,21 @@ public class ESSyncUtil {
|
|
|
if (v.length() > 18 && v.charAt(4) == '-' && v.charAt(7) == '-' && v.charAt(10) == ' '
|
|
|
&& v.charAt(13) == ':' && v.charAt(16) == ':') {
|
|
|
String dt = v.substring(0, 10) + "T" + v.substring(11);
|
|
|
- DateTime dateTime = new DateTime(dt, DateTimeZone.forID("+08:00"));
|
|
|
- if (dateTime.getMillisOfSecond() != 0) {
|
|
|
- res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
|
|
|
- } else {
|
|
|
- res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
|
|
|
+ Date date = Util.parseDate(dt);
|
|
|
+ if (date != null) {
|
|
|
+ DateTime dateTime = new DateTime(date);
|
|
|
+ if (dateTime.getMillisOfSecond() != 0) {
|
|
|
+ res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00");
|
|
|
+ } else {
|
|
|
+ res = dateTime.toString("yyyy-MM-dd'T'HH:mm:ss+08:00");
|
|
|
+ }
|
|
|
}
|
|
|
} else if (v.length() == 10 && v.charAt(4) == '-' && v.charAt(7) == '-') {
|
|
|
- DateTime dateTime = new DateTime(v, DateTimeZone.forID("+08:00"));
|
|
|
- res = dateTime.toString("yyyy-MM-dd");
|
|
|
+ Date date = Util.parseDate(v);
|
|
|
+ if (date != null) {
|
|
|
+ DateTime dateTime = new DateTime(date);
|
|
|
+ res = dateTime.toString("yyyy-MM-dd");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} else if ("binary".equals(esType)) {
|