[BUG]Datax写入数据到psql报不能序列化特殊字符

发布时间:2023年12月29日

1.问题描述

Datax从mongodb写入数据到psql报错如下
img

org.postgresql.util.PSQLException: ERROR: invalid bytesequence for encoding "UTF8": 0x00

2.原因分析

此为psql独有的错误,不能对特殊字符’/u0000’,进行序列化,需要将此特殊字符替换掉,由于datax中不能对mongodb进行select处理,因此此处需要对源码进行处理。
由报错可知,出错的jar报为:plugin-rdbms-util-0.0.1-SNAPSHOT.jar
由报错可知,出错的class报为:com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter

3.问题解决

//1.下载datax源码,找到com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter文件
//2.修改源码com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter类中的 Task 
//声明alterColumns
protected List<String> alterColumns;
// this.columns = writerSliceConfig.getList(Key.COLUMN, String.class);//替换为
if(alterColumns != null && !alterColumns.isEmpty()){
                alterColumns.clear();
            }else if (alterColumns == null){
                alterColumns= new ArrayList<>();
}
for (String column : writerSliceConfig.getList(Key.COLUMN, String.class)) {
    if(StringUtils.isNotEmpty(column)){
        alterColumns.add(column.replaceAll("/u0000",""));
    }else {
        alterColumns.add(column);
    }
}
this.columns =alterColumns;
//3.编译plugin-rdbms-util模块形成plugin-rdbms-util-0.0.1-SNAPSHOT.jar
//4.替换plugin-rdbms-util-0.0.1-SNAPSHOT.jar
cp plugin-rdbms-util-0.0.1-SNAPSHOT.jar /datax/plugin/writer/postgresqlwriter/libs/

4.测试是否完成

文章来源:https://blog.csdn.net/Brother_ning/article/details/135280417
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。