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转为字符型。 

问题解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容