in client-adapter/kudu/src/main/java/com/alibaba/otter/canal/client/adapter/kudu/support/KuduTemplate.java [325:398]
private void fillRow(PartialRow row, String colName, Object rawVal, Type type) {
String rowValue = "0";
if (!(rawVal == null || "".equals(rawVal))) {
rowValue = rawVal + "";
} else {
return;
}
if (type == null) {
logger.warn("got unknown type {} for column '{}'-- ignoring this column", type, colName);
return;
}
try {
switch (type) {
case INT8:
row.addByte(colName, Byte.parseByte(rowValue));
break;
case INT16:
row.addShort(colName, Short.parseShort(rowValue));
break;
case INT32:
row.addInt(colName, Integer.parseInt(rowValue));
break;
case INT64:
row.addLong(colName, Long.parseLong(rowValue));
break;
case BINARY:
row.addBinary(colName, rowValue.getBytes());
break;
case STRING:
row.addString(colName, rowValue);
break;
case BOOL:
if (!("true".equalsIgnoreCase(rowValue) || "false".equalsIgnoreCase(rowValue))) {
return;
}
row.addBoolean(colName, Boolean.parseBoolean(rowValue));
break;
case FLOAT:
row.addFloat(colName, Float.parseFloat(rowValue));
break;
case DOUBLE:
row.addDouble(colName, Double.parseDouble(rowValue));
break;
case UNIXTIME_MICROS:
if ("0".equals(rowValue)) {
try {
Date parse = sdf.parse("2099-11-11 11:11:11");
row.addLong(colName, parse.getTime());
} catch (ParseException e) {
logger.warn("date column is null");
}
} else {
try {
Date parse = rowValue.length() > 19 ? sdf.parse(rowValue.substring(0, 19)) : sdf.parse(rowValue);
row.addLong(colName, parse.getTime());
} catch (ParseException e) {
logger.warn("date format error, error data is :{}", rowValue);
try {
Date parse = sdf.parse("2099-11-11 11:11:11");
row.addLong(colName, parse.getTime());
} catch (ParseException ie) {
logger.warn("date column is null");
}
}
}
break;
default:
logger.warn("got unknown type {} for column '{}'-- ignoring this column", type, colName);
}
} catch (NumberFormatException e) {
logger.error(e.getMessage());
logger.error("column parse fail==> column name=>{},column type=>{},column value=>{}", colName, type, rawVal);
}
}