【开发问题】flink-cdc不用数据库之间的,不同类型的转化

不同的数据库之期间数据类型转化

  • 问题来源与原因
  • 解决过程,思路错误,导致各种错误
    • 错误思路是什么
  • 正确解决方式,找官网对应的链接器,数据转化

问题来源与原因

我一开始是flink-cdc,oracle2Mysql,sql
我一开始直接用的oracle【date】类型,mysql【date】类型,sql的校验通过了,但是真正操作数据的时候报错,告诉我oracle的数据格式的日期数据,不可以直接插入到mysql格式的日期数据,说白了就是数据格式不一致导致的

解决过程,思路错误,导致各种错误

错误思路是什么

我想的是既然格式不对,就自己手动把格式转一下,然后变成mysql认可的格式就好了,这之间,报了很多错误,又是方法不对,又是,方法参数类型不对。反正这个路其实是错误的
错误方式1:
【开发问题】flink-cdc不用数据库之间的,不同类型的转化_第1张图片
错误方式2:
【开发问题】flink-cdc不用数据库之间的,不同类型的转化_第2张图片
错误方式3:
【开发问题】flink-cdc不用数据库之间的,不同类型的转化_第3张图片
各种转化错误

正确解决方式,找官网对应的链接器,数据转化

连接器jdbc的地址
【开发问题】flink-cdc不用数据库之间的,不同类型的转化_第4张图片
【开发问题】flink-cdc不用数据库之间的,不同类型的转化_第5张图片

MySQL type Oracle type PostgreSQL type SQL Server type Flink SQL type
TINYINT TINYINT TINYINT
SMALLINT TINYINT UNSIGNED SMALLINT INT2 SMALLSERIAL SERIAL2 SMALLINT SMALLINT
INT MEDIUMINT SMALLINT UNSIGNED INTEGER SERIAL INT INT
BIGINT INT UNSIGNED BIGINT INT UNSIGNED BIGINT BIGINT
BIGINT UNSIGNED DECIMAL(20, 0)
BIGINT BIGINT BIGINT
FLOAT BINARY_FLOAT REAL FLOAT4 REAL FLOAT
DOUBLE DOUBLE PRECISION BINARY_DOUBLE FLOAT8 DOUBLE PRECISION FLOAT DOUBLE
NUMERIC(p, s) DECIMAL(p, s) SMALLINT FLOAT(s) DOUBLE PRECISION REAL NUMBER(p, s) NUMERIC(p, s) DECIMAL(p, s) NUMERIC(p, s) DECIMAL(p, s) DECIMAL(p, s)
BOOLEAN TINYINT(1) BOOLEAN BIT BOOLEAN
DATE DATE DATE DATE DATE
TIME [§] DATE TIME [§] [WITHOUT TIMEZONE] TIME(0) TIME [§] [WITHOUT TIMEZONE]
DATETIME [§] TIMESTAMP [§] [WITHOUT TIMEZONE] TIMESTAMP [§] [WITHOUT TIMEZONE] DATETIME DATETIME2 TIMESTAMP [§] [WITHOUT TIMEZONE]
CHAR(n) VARCHAR(n) TEXT CHAR(n) VARCHAR(n) CLOB CHAR(n) CHARACTER(n) VARCHAR(n) CHARACTER VARYING(n) TEXT CHAR(n) NCHAR(n) VARCHAR(n) NVARCHAR(n) TEXT NTEXT STRING
BINARY VARBINARY BLOB RAW(s) BLOB BYTEA BINARY(n) VARBINARY(n) BYTES
ARRAY ARRAY

你可能感兴趣的:(flink,数据库,大数据)