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

1.问题描述

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

bash 复制代码
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.问题解决

java 复制代码
//1.下载datax源码,找到com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter文件
//2.修改源码com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter类中的 Task 
//找到fillPreparedStatementColumnType方法
protected List<String> alterColumns;
//  case Types.LONGNVARCHAR:
                    // preparedStatement.setString(columnIndex + 1, column
                    //         .asString());
                    // break;//替换为
case Types.LONGNVARCHAR:
String value = column.asString();
            if (Objects.nonNull(value)) {
               value = value.trim().replaceAll("\u0000", "");
            }
            preparedStatement.setString(columnIndex + 1, value);
            break;
//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.测试是否完成

5.安装包下载

plugin-rdbms-util-0.0.1-SNAPSHOT.jar安装包下载 提取码: kwhr

相关推荐
姜西西_2 小时前
[测试]软件测试的生命周期,bug的级别及生命周期
bug·测试
sp42a3 小时前
Install PostgreSQL with pgvector
数据库·postgresql·pgvector
viperrrrrrrrrr73 小时前
大数据学习(67)- Flume、Sqoop、Kafka、DataX对比
大数据·学习·kafka·sqoop·flume·datax
数巨小码人17 小时前
PostgreSQL存储管理体系结构学习笔记2
数据库·postgresql
我要升天!1 天前
Linux中基础开发工具详细介绍
linux·运维·服务器·c++·postgresql
不要小看我们之间的羁绊啊1 天前
PostgreSQL 多数据库集簇配置及多数据库复制方法【流程+代码实例】
数据库·postgresql
坐山龟1 天前
PostgreSQL16 的双向逻辑复制
数据库·笔记·postgresql
爱学习的张哥1 天前
IP层之分片包的整合处理---BUG修复
单片机·tcp/ip·bug
m0_748250742 天前
PostgreSQL-01-入门篇-简介
数据库·postgresql
丁总学Java2 天前
小程序渲染之谜:如何解决“加载中...”不消失的 Bug(glass-easel)
前端·小程序·bug·glass·glass-easel·easel