一、 提示没有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 重新生成