数据传输服务DTS数据类型映射关系
详细解答可以参考官方帮助文档由于 Oracle 和 MySQL 的数据类型并不是一一对应的,所以 DTS 在进行结构迁移时,会根据两种数据库类型的数据类型定义,进行类型映射,下面是数据类型映射关系。
Oracle 数据类型
MySQL 数据类型
DTS 是否支持
varchar2(n [char/byte])
varchar(n)
支持
nvarchar2[(n)]
national varchar[(n)]
支持
char[(n [byte/char])]
char[(n)]
支持
nchar[(n)]]
national char[(n)]
支持
number[(p[,s])]
decimal[(p[,s])]
支持
float(p)]
double
支持
long
longtext
支持
date
datetime
支持
binary_float
decimal(65,8)
支持
binary_double
double
支持
timestamp[(fractional_seconds_precision)]
datetime[(fractional_seconds_precision)]
支持
timestamp[(fractional_seconds_precision)]with local time zone
datetime[(fractional_seconds_precision)]
支持
timestamp[(fractional_seconds_precision)]with local time zone
datetime[(fractional_seconds_precision)]
支持
clob
longtext
支持
nclob
longtext
支持
blob
longblob
支持
raw
varbinary(2000)
支持
long raw
longblob
支持
bfile
—
不支持
interval year(year_precision) to mongth
—
不支持
interval day(day_precision) to second[(fractional_seconds_precision)]
—
不支持
对于 char 类型,当 char(n) 的定义长度 n 超过 255 时,DTS 会自动将类型转换为 varchar(n)。由于 MySQL 本身不支持类似 Oracle 中的 bfile、interval year to month、interval day to second 这三种数据类型,所以 DTS 在进行结构迁移时,无法在 MySQL 中找到合适的数据类型进行映射,因此这三种类型不会进行转化。迁移时如果表中含有这三种类型,会导致结构迁移失败,用户可以在指定迁移对象的时候,对需要迁移的对象中这三种类型的列进行排除。由于 MySQL 的 timestamp 类型不包含时区,而 Oracle 的 timestamp with time zone 和 timestamp with local time zone 两种类型默认带有时区信息,所以 DTS 在迁移这两种类型的数据时,会将其转换成 UTC 时区后存入目标 RDS for MySQL 实例。
赞2
踩1