[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

相关推荐
你不是我我17 小时前
【AI 测评】PostgreSQL主从流复制实战:数据同步、状态验证与故障切换
数据库·postgresql
棒棒的唐17 小时前
postgresql集成pgvector
数据库·postgresql
隔窗听雨眠18 小时前
Oracle到PostgreSQL迁移实战:pg_hint_plan执行计划控制完全指南
数据库·postgresql·oracle
qingmiaozhuan19 小时前
软件测试Bug复现高清录屏标准流程:新手入门与规范指南(2026实战版)
bug·电脑录屏·电脑录屏软件·测试录屏规范·音画同步录制
凌云拓界2 天前
NodeVerdict:Node.js 原生诊断数据可视化工具
信息可视化·架构·typescript·开源·node.js·github·bug
jnrjian2 天前
PG 导出表为excel iconv 乱码
数据库·postgresql
IvorySQL3 天前
PostgreSQL 日报| GiST 索引扫描可见性缺陷(8 月 3 日)
数据库·人工智能·postgresql·开源
leeyi4 天前
Indexer + Retriever 源码:从 Eino 接口到 pgvector SQL(第73篇-E59)
postgresql·aigc·agent
隔窗听雨眠4 天前
80TB电商数据迁移实录:从PostgreSQL分析困境到Apache Doris架构突围
postgresql·架构·apache