ETL工具Kettle对PostgreSQL操作的基本介绍

用途和背景

ETL (extract, transform, load)工具是用于数据库数据迁移清洗处理等操作的工具。

我们有时会面临一种情况:实时运行的系统由于需求的变化而去更新DB的结构,这样便需要收集系统实时运行的数据,然后将其传入到新的DB结构中去,以确保实时运行的数据不会丢失。当然我们可以通过SQL(在没有bytea字段的情况下)或JDBC去完成整个流程,但是这样做远远不如ETL高效。

 

Bug修改

    Kettle中,在处理PostgreSQL数据时候,我们目前发现2个会对工作产生影响的Bug。其一是对bytea数据的处理,其二是对boolean数据的处理。我们可以简单对它的源码进行修改,使它可以运行起来。

 

修改一(对Bytea部分Bug的修改)

修改了org.pentaho.di.core.database.Database.java中关于Blob的处理
   
   
更改前为:
   
   
case ValueMetaInterface.TYPE_BINARY :
  
  
{
  
  
         if (databaseMeta.supportsGetBlob()){
  
  
                 Blob blob = rs.getBlob(i+1);
  
  
                 //这里连接数据库为postgresql时,会抛出异常
   
   
                 if (blob!=null){
  
  
                          data[i] = blob.getBytes(
  
  
   
   1L
  
  , (int)blob.length());
  
  
                 }else{
  
  
                          data[i] = null;
  
  
                 }
  
  
         }
  
  
         else{
  
  
                 data[i] = rs.getBytes(i+1);
  
  
         }
  
  
}
  
  
break;
  
  
更改后为:
   
   
case Va
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值