一、今天在使用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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_48833605/article/details/127550189