一、今天在使用Seatunnel从Mysql往Hive抽数时,报错: Caused by: java.sql.SQLException: Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
1.发现报错后赶紧百度一番,查到原因,原文链接如下
https://blog.csdn.net/qq_41665826/article/details/116403625
2.错误产生的原因,以及三种参数配置
产生错误原因是DATETIME值完全由0组成,无法表示
(1)设置zeroDateTimeBehavior 属性,当遇到DATETIME值完全由0组成时,最终的有效值可以设置为,
.异常(exception),
.一个近似值(round),
.将这个值转换为null(convertToNull)。
(2)默认情况为exception,设置这个属性会抛出一个SQLException异常,其SQLSate码为S1009。这个
状态码在写存储过程处理异常时也可以用到。
(3)convertToNull,返回null来替代0000-00-00这样的日期。
(4)round,将日期转换为0001-01-01。
因此,出现0000-00-00 属于一个无效日期,用convertToNull属性即可。
3.解决过程
在Seatunnel脚本中,找到jdbc的URL,在末尾加上&zeroDateTimeBehavior=convertToNull 即可
例:jdbc:mysql://hostname:3306/database_name?zeroDateTimeBehavior=convertToNull
版权声明:本文为weixin_48833605原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。