可以的,通过设置 debezium 的 decimal.handling.mode <https://debezium.io/documentation/reference/1.9/connectors/oracle.html#oracle-property-decimal-handling-mode> [1] 参数可以实现你的需求,转成 double 或者 string 来处理。
[1] https://debezium.io/documentation/reference/1.9/connectors/oracle.html#oracle-numeric-types ha.fen...@aisino.com <ha.fen...@aisino.com> 于2024年6月26日周三 16:35写道: > Map<String, Object> customConverterConfigs = new HashMap<>(); > customConverterConfigs.put(JsonConverterConfig.DECIMAL_FORMAT_CONFIG, > "numeric"); > PRICE是decimal 类型,按上面设置可以正常了,ID是NUMBER,还是显示"ID":{"scale":0,"value":"AQ=="} > 我试了下,我的ID是1,base64后是MQ==,这个ID还不是base64以后的结果。 > 通过JsonDebeziumDeserializationSchema(true, > customConverterConfigs);打印出来schema > {"schema":{"type":"struct","fields":[{"type":"struct","fields":[{"type":"struct","fields":[{"type":"int32","optional":false,"field":"scale"},{"type":"bytes","optional":false,"field":"value"}],"optional":false,"name":"io.debezium.data.VariableScaleDecimal","version":1,"doc":"Variable > scaled decimal","field":"ID"}, > 那是不是有什么方法,把对应的字段类型先设置好传进去 > > 发件人: Yanquan Lv > 发送时间: 2024-06-26 14:46 > 收件人: user-zh > 主题: Re: 回复:cdc读取oracle数据如何解析 > 你好,你的 ID 和 PRINCE 字段类型是 decimal 吗,decimal 默认的展示方式是使用 BASE64 处理 > > 可以通过添加下面代码来让展示信息更直观。 > > Map<String, Object> customConverterConfigs = new HashMap<>(); > customConverterConfigs.put(JsonConverterConfig.DECIMAL_FORMAT_CONFIG, > "numeric"); > JsonDebeziumDeserializationSchema schema = new > JsonDebeziumDeserializationSchema(includeSchema, > customConverterConfigs); > > > > > ha.fen...@aisino.com <ha.fen...@aisino.com> 于2024年6月25日周二 17:26写道: > > > 数据没问题 > > "ID" "NAME" "ADDTIME" "PRICE" > > 1 "aa" 2024-6-25 14:21:33 12.22 > > > > 发件人: 15868861416 > > 发送时间: 2024-06-25 17:19 > > 收件人: user-zh@flink.apache.org > > 主题: 回复:cdc读取oracle数据如何解析 > > 检查一下oracle中的DEBEZIUM.PRODUCTS这个表的数据,看你解析中有字符串 > > > > > > > > > > | | > > 博星 > > | > > | > > 15868861...@163.com > > | > > > > > > ---- 回复的原邮件 ---- > > | 发件人 | ha.fen...@aisino.com<ha.fen...@aisino.com> | > > | 发送日期 | 2024年06月25日 15:54 | > > | 收件人 | user-zh<user-zh@flink.apache.org> | > > | 主题 | cdc读取oracle数据如何解析 | > > 根据文档的代码 > > JdbcIncrementalSource<String> oracleChangeEventSource = > > new OracleSourceBuilder() > > .hostname("host") > > .port(1521) > > .databaseList("ORCLCDB") > > .schemaList("DEBEZIUM") > > .tableList("DEBEZIUM.PRODUCTS") > > .username("username") > > .password("password") > > .deserializer(new JsonDebeziumDeserializationSchema()) > > .includeSchemaChanges(true) // output the schema changes as well > > .startupOptions(StartupOptions.initial()) > > .debeziumProperties(debeziumProperties) > > .splitSize(2) > > .build(); > > 返回的结果: > > > > > {"before":null,"after":{"ID":{"scale":0,"value":"AQ=="},"NAME":"aa","ADDTIME":1719325293000,"PRICE":"BMY="},"source":{"version":"1.9.8.Final","connector":"oracle","name":"oracle_logminer","ts_ms":0,"snapshot":"false","db":"ORCL","sequence":null,"schema":"CDC","table":"ORDER_CDC","txId":null,"scn":"0","commit_scn":null,"lcr_position":null,"rs_id":null,"ssn":0,"redo_thread":null},"op":"r","ts_ms":1719301769186,"transaction":null} > > > > 如何解析?PRICE应该是数字,ID也是数字,这里显示的都不同 > > >