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> <artifactId>commons-codec</artifactId>
<version>1.9</version> <version>1.9</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency> <dependency>
<groupId>commons-logging</groupId> <groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId> <artifactId>commons-logging</artifactId>
@ -108,6 +113,7 @@
</relocations> </relocations>
<artifactSet> <artifactSet>
<includes> <includes>
<include>org.apache.commons:commons-lang3</include>
<include>commons-codec:commons-codec</include> <include>commons-codec:commons-codec</include>
<include>commons-logging:*</include> <include>commons-logging:*</include>
<include>org.apache.httpcomponents:httpclient</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; import com.google.common.base.Strings;
public class DorisCsvSerializer implements DorisISerializer { public class DorisCsvSerializer extends DorisBaseSerializer implements DorisISerializer {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -22,7 +22,7 @@ public class DorisCsvSerializer implements DorisISerializer {
public String serialize(Record row) { public String serialize(Record row) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < row.getColumnNumber(); i++) { 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); sb.append(null == value ? "\\N" : value);
if (i < row.getColumnNumber() - 1) { if (i < row.getColumnNumber() - 1) {
sb.append(columnSeparator); sb.append(columnSeparator);

View File

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