[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

相关推荐
l1t11 小时前
DeepSeek总结的pg_clickhouse 与 chdb 更新:编码、嵌套与类型
数据库·clickhouse·postgresql
余槐i2 天前
EXPLAIN 显示走了索引查询仍慢:回表与选择性在 500 万行表上拉开 10 倍耗时
数据库·postgresql·性能优化·vacuum·explain
烧烧的酒0.o2 天前
Codex桌面版更新后不能使用最新模型问题-排查修复总结
chatgpt·bug
梦在远山后2 天前
PostgreSQL 锁与死锁:结合 DevMind 讲清楚
python·postgresql·agent
浪潮IT馆2 天前
Windows 10 安装 PostgreSQL 9.6.24 完整教程
数据库·windows·postgresql
岳麓丹枫0012 天前
PG 孤儿物理复制槽残留导致 pg_wal 膨胀 19G 故障分析
postgresql
haerapi3 天前
把 PostgreSQL 复制巡检做成可审计闭环:确定性采集、阈值判定与受控模型归纳
数据库·postgresql
如果'\'真能转义说3 天前
Docker Desktop | 本地化挂载 Postgresql
docker·postgresql·容器
sg_knight3 天前
ZCode Bug 定位实战:把报错丢给 ZCode,它是怎么修的
llm·bug·agent·ai编程·glm·智谱·zcode