dlink0.7.5+flink1.15.2 同步pg数据修改源码

一、 提示没有postgres-cdc

需要注意的是1.14版本中有的,我们需要复制1.14版本的代码到1.15的这里。
CDCBuilderFactory中添加上 

put(PostgresCDCBuilder.KEY_WORD, () -> new PostgresCDCBuilder());

如果是本地编译运行的话,还需要在dlink-flink-1.15的pom.xml中添加

<dependency> 
<groupId>com.ververica</groupId> 
<artifactId>flink-sql-connector-postgres-cdc</artifactId> 
<version>${flinkcdc.version}</version> 
</dependency>

 二、使用过程中发现flink cdc同步postgres的numeric或者decimal类型的数据时发现 精度超过38就会报错



于是修改源码:当decimal精度超过38的时候就转为string类型

1.修改PostgreSqlTypeConvert类,新增(注意要在原decimal类型判断之前。)

else if ((t.contains("numeric") || t.contains("decimal")) && column.getPrecision().intValue()>38) {
            columnType = ColumnType.STRING;
        }

2.修改FlinkBaseUtil中getColumnProcessing方法。新增

else if (config.getType().contains("postgres-cdc") && (column.getType().contains("numeric") || column.getType().contains("decimal")) && column.getPrecision().intValue()>38) {
            return " CAST("+column.getName()+" AS STRING) AS `" + column.getName() + "`";
        }

 

三、提示query schema和sink schema  不一致

出现列的类型不一致,或者列的数量不一致

delete   from metadata_table_property where table_id = (select id  from   metadata_table    where  table_name ='')
DELETE  from   metadata_table    where  table_name  =''

删除dlink中的catalog  重新生成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值