otter解决同步Mysql数据表中字段为json格式失败问题,需要在eventProcess中自定义处理,代码如下:
package com.alibaba.otter.node.extend.processor;
import com.alibaba.otter.shared.etl.model.EventColumn;
import com.alibaba.otter.shared.etl.model.EventData;
import org.apache.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import java.util.List;
import java.util.HashSet;
import java.util.Set;
public class TestEventProcessor extends AbstractEventProcessor {
private static final Set<String> JSON_FIELD_SET = new HashSet<>();
public boolean process(EventData eventData) {
String orgCode = "bbb";
Long tenantId = 1L;
Boolean isHandle = true;
JSON_FIELD_SET.add("name_json");
for (EventColumn eventColumn : eventData.getColumns()) {
if (JSON_FIELD_SET.contains(eventColumn.getColumnName())) {
String jsonValue = eventColumn.getColumnValue();
if (StringUtils.isBlank(jsonValue)) {
continue;
}
eventColumn.setColumnValue(JSON.toJSONString(JSONObject.parse(jsonValue)));
}
}
return isHandle;
}
}