[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

相关推荐
Mr.朱鹏6 小时前
【Python 进阶 | 第四篇】Psycopg3 + Flask 实现 PostgreSQL CRUD 全流程:从连接池到RESTful接口
python·postgresql·flask·virtualenv·fastapi·pip·tornado
鸿儒51716 小时前
记录一个C++ Windows程序移植到Linux系统的bug
开发语言·c++·bug
Python私教2 天前
HermesAgent 终端工具 Windows 兼容性修复实战:两个 Bug 的排查与解决
windows·bug
瀚高PG实验室2 天前
pgroonga全文检索插件的BUG
数据库·postgresql·bug·瀚高数据库
hudson20222 天前
Postgres 实现自增的三种方式
postgresql
dblens 数据库管理和开发工具2 天前
DBLens for PostgreSQL 正式发布|把 PostgreSQL 开发与管理带进 AI + Agent 时代
数据库·人工智能·postgresql
l1t3 天前
DeepSeek总结的面向 PostgreSQL 分析和 HTAP 工作负载的两种高性能表访问方法
数据库·postgresql
老年DBA3 天前
PostgreSQL 高负载 Load Average 暴涨 | BufferMapping LWLock 锁竞争 完整排查优化实战
数据库·postgresql
脑子进水养啥鱼?3 天前
PostgreSql CAST
数据库·postgresql
Mrssory3 天前
Postgresql数据库快速入门
数据库·postgresql