fix date datetime timestamp convertion

This commit is contained in:
fariel 2021-03-22 20:03:38 +08:00
parent 70a480f562
commit 5cd07ab084
4 changed files with 63 additions and 4 deletions

View File

@ -41,6 +41,11 @@
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
@ -108,6 +113,7 @@
</relocations>
<artifactSet>
<includes>
<include>org.apache.commons:commons-lang3</include>
<include>commons-codec:commons-codec</include>
<include>commons-logging:*</include>
<include>org.apache.httpcomponents:httpclient</include>

View File

@ -0,0 +1,52 @@
package com.dorisdb.connector.datax.plugin.writer.doriswriter.row;
import java.util.TimeZone;
import com.alibaba.datax.common.element.Column;
import com.alibaba.datax.common.element.DateColumn;
import com.alibaba.datax.common.element.Column.Type;
import com.alibaba.datax.common.util.Configuration;
import org.apache.commons.lang3.time.DateFormatUtils;
public class DorisBaseSerializer {
static String datetimeFormat = "yyyy-MM-dd HH:mm:ss";
static String dateFormat = "yyyy-MM-dd";
static String timeFormat = "HH:mm:ss";
static String timeZone = "GMT+8";
static TimeZone timeZoner = TimeZone.getTimeZone(DorisBaseSerializer.timeZone);
static void init(final Configuration configuration) {
DorisBaseSerializer.datetimeFormat = configuration.getString("common.column.datetimeFormat", datetimeFormat);
DorisBaseSerializer.timeFormat = configuration.getString("common.column.timeFormat", timeFormat);
DorisBaseSerializer.dateFormat = configuration.getString("common.column.dateFormat", dateFormat);
DorisBaseSerializer.timeZone = configuration.getString("common.column.timeZone", DorisBaseSerializer.timeZone);
DorisBaseSerializer.timeZoner = TimeZone.getTimeZone(DorisBaseSerializer.timeZone);
}
protected String fieldConvertion(Column col) {
if (null == col.getRawData()) {
return null;
}
if (Type.DATE != col.getType()) {
return col.asString();
}
DateColumn.DateType type = ((DateColumn)col).getSubType();
if (type == DateColumn.DateType.DATE) {
return DateFormatUtils.format(col.asDate(), DorisBaseSerializer.dateFormat, DorisBaseSerializer.timeZoner);
}
if (type == DateColumn.DateType.TIME) {
return DateFormatUtils.format(col.asDate(), DorisBaseSerializer.timeFormat, DorisBaseSerializer.timeZoner);
}
if (type == DateColumn.DateType.DATETIME) {
return DateFormatUtils.format(col.asDate(), DorisBaseSerializer.datetimeFormat, DorisBaseSerializer.timeZoner);
}
return null;
}
}

View File

@ -6,7 +6,7 @@ import com.alibaba.datax.common.element.Record;
import com.google.common.base.Strings;
public class DorisCsvSerializer implements DorisISerializer {
public class DorisCsvSerializer extends DorisBaseSerializer implements DorisISerializer {
private static final long serialVersionUID = 1L;
@ -22,7 +22,7 @@ public class DorisCsvSerializer implements DorisISerializer {
public String serialize(Record row) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < row.getColumnNumber(); i++) {
Object value = row.getColumn(i).getRawData();
String value = fieldConvertion(row.getColumn(i));
sb.append(null == value ? "\\N" : value);
if (i < row.getColumnNumber() - 1) {
sb.append(columnSeparator);

View File

@ -7,7 +7,7 @@ import java.util.Map;
import com.alibaba.datax.common.element.Record;
import com.alibaba.fastjson.JSON;
public class DorisJsonSerializer implements DorisISerializer {
public class DorisJsonSerializer extends DorisBaseSerializer implements DorisISerializer {
private static final long serialVersionUID = 1L;
@ -25,7 +25,8 @@ public class DorisJsonSerializer implements DorisISerializer {
Map<String, Object> rowMap = new HashMap<>(fieldNames.size());
int idx = 0;
for (String fieldName : fieldNames) {
rowMap.put(fieldName, row.getColumn(idx++).getRawData());
rowMap.put(fieldName, fieldConvertion(row.getColumn(idx)));
idx++;
}
return JSON.toJSONString(rowMap);
}