ETL中遇到的小问题:Invalid column type

时间:2019-08-23

背景:业务需求,需将Mysql源库中一表A同步到数仓oracle中,工具依然选用 pentaho kettle 8.2。

问题:没想到被遇到的一个小问题耽误了许久。

步入正题。

报错如下:Invalid column type:16 

很显然的字段类型不匹配,但因此表的字段过多(40个左右),数据量颇大(近2000W)。通过目测判断可能出错的字段类型: date,time,timestamp,并且一一尝试,但是都一直报错。

在观察报错日志,显然是Boolean,显然是布尔型的报错.....

我在oracle端create此表的时候,没有根据kettle自动生成的建表SQL。因为自动生成的往往会有一些小问题。

下图是我在MySQL使用show create table A ,展示的建表语句。注意我标注的字段,就是此字段导致的问题。

kettle是一个数据处理的中间件,它从数据源读到的数据和数据源在某些特定的情况下,会有差异。

如下图,相同的表,相同的字段。

mysql 认为是char(1),但是kettle认为是Boolean。

使用 cast(deleted as char) 此函数处理,就是把deleted转为字符型。 

问题解决。

你可能感兴趣的:(ETL中遇到的小问题:Invalid column type)