用dataX向PolarDB中导数据时,出现脏数据问题怎么解决

本文介绍了使用DataX进行数据迁移时遇到的字段异常和表情包导入问题。针对数仓中null值导致的导入失败,解决方案是设置nullFormat:N。此外,为确保含有表情包的数据能成功导入MySQL,需注意表的字符集设置为utf8mb4,并在DataX连接参数中指定特殊字符处理。同时,分享了在azkaban中通过任务调度查看详细日志的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先附上dataX官网:DataX大大

这是我的dataX 导数据的json文件,其中有个属性

fieldDelimiter    我原本设置为 \u0001

在这里插入图片描述

执行shell 脚本直接执行 dataX 导数据的json 文件

会出现导入失败的现象:
在这里插入图片描述

直接执行shell 脚本在黑窗口中看到的日志信息有限,那么去azkaban中通过任务调度的方式去执行 dataX导数据操作:

日志信息显示是由于某一个字段值得问题导致数据导入失败:
   这里用dataX导入的数据是 数仓中的 string 类型的数据导入到PolarDB表中
   对应的字段是 json 类型,推断可能是由于数仓中该字段值有null值,导入到
   PolarDB中在进行json类型转化,产生的异常。

这里通过修改 DataX导数据的 json 文件中对空值处理的方式:

"nullFormat":"\\N"    --空值默认为 \\N   前面的 \ 应该是转义字符

在这里插入图片描述
数据就能全部导入了:
在这里插入图片描述

导入数据中包含表情包:

例如一段话中使使用输入法中的表情包
将数据导入导mysql 表中

两处需要注意:

1.mysql建表需要注意字符集: utf8mb4
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. dataX json脚本链接mysql参数 ?useUnicode=true&com.mysql.jdbc.faultInjection.serverCharsetIndex=45
"jdbcUrl": "jdbc:mysql://${wx_mysql_url}:${wx_mysql_port}/${wx_mysql_db}?useUnicode=true&com.mysql.jdbc.faultInjection.serverCharsetIndex=45"
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值