【开发问题】flink-cdc不用数据库之间的,不同类型的转化
我一开始直接用的oracle【date】类型,mysql【date】类型,sql的校验通过了,但是真正操作数据的时候报错,告诉我oracle的数据格式的日期数据,不可以直接插入到mysql格式的日期数据,说白了就是数据格式不一致导致的。我想的是既然格式不对,就自己手动把格式转一下,然后变成mysql认可的格式就好了,这之间,报了很多错误,又是方法不对,又是,方法参数类型不对。反正这个路其实是错误的
·
不同的数据库之期间数据类型转化
问题来源与原因
我一开始是flink-cdc,oracle2Mysql,sql
我一开始直接用的oracle【date】类型,mysql【date】类型,sql的校验通过了,但是真正操作数据的时候报错,告诉我oracle的数据格式的日期数据,不可以直接插入到mysql格式的日期数据,说白了就是数据格式不一致导致的
解决过程,思路错误,导致各种错误
错误思路是什么
我想的是既然格式不对,就自己手动把格式转一下,然后变成mysql认可的格式就好了,这之间,报了很多错误,又是方法不对,又是,方法参数类型不对。反正这个路其实是错误的
错误方式1:
错误方式2:
错误方式3:
各种转化错误
正确解决方式,找官网对应的链接器,数据转化
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 |
更多推荐
已为社区贡献2条内容
所有评论(0)