mirror of
https://github.com/alibaba/DataX.git
synced 2025-05-03 03:40:24 +08:00
fix date datetime timestamp convertion
This commit is contained in:
parent
70a480f562
commit
5cd07ab084
@ -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>
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user