不同类型的数据库(异构数据库)支持的数据类型不一样,DTS在进行异构数据库之间的数据迁移时,会在结构迁移阶段进行数据类型映射,即将源库中的数据类型转为目标库支持的数据类型。本文为您列出详细数据类型映射关系,便于您查阅和评估数据迁移对业务的影响。
概览
根据如下迁移方案,查看异构数据库间的数据类型映射关系:
若源端时间字段的数据类型为TIMESTAMP WITH TIME ZONE,目标端时间字段的数据类型为DATETIME等异构数据类型,时间字段的时区信息将会丢失。
以PolarDB MySQL、RDS MySQL、自建MySQL为源的数据迁移
当源实例为PolarDB MySQL、RDS MySQL、自建MySQL,且目标实例为异构数据库时(包括云原生数据仓库AnalyticDB MySQL版 3.0和2.0、云原生数据仓库AnalyticDB PostgreSQL版),两者间的数据类型映射关系如下:
如源实例中待迁移数据范围超出DTS所支持的范围,则会导致目标实例中的所迁入数据的精度降低。
类型 | 源实例的数据类型 | 数值范围 | 云原生数据仓库AnalyticDB MySQL版 3.0的数据类型 | 云原生数据仓库AnalyticDB MySQL版 2.0的数据类型 | 云原生数据仓库AnalyticDB PostgreSQL版的数据类型 |
整数类型 | BIT[(M)] | 1 ~ 64 | VARCHAR | INT | BIT[(M)] |
TINYINT[(M)] | -128 ~ 127 | TINYINT | TINYINT | SMALLINT | |
TINYINT[(M)] [UNSIGNED] | 0 ~ 255 | SMALLINT | SMALLINT | SMALLINT | |
SMALLINT[(M)] | -32768 ~ 32767 | SMALLINT | SMALLINT | SMALLINT | |
SMALLINT[(M)] [UNSIGNED] | 0 ~ 65535 | INT | INT | INTEGER | |
MEDIUMINT[(M)] | -8388608 ~ 8388607 | INT | INT | INTEGER | |
MEDIUMINT[(M)] [UNSIGNED] | 0 ~ 16777215 | INT | INT | INTEGER | |
INT[(M)] | -2147483648 ~ 2147483647 | INT | INT | INTEGER | |
INT[(M)] [UNSIGNED] | 0 ~ 4294967295 | BIGINT | BIGINT | BIGINT | |
BIGINT[(M)] | -9223372036854775808 ~ 9223372036854775807 | BIGINT | BIGINT | BIGINT | |
BIGINT[(M)] [UNSIGNED] | 0 ~ 18446744073709551615. | DECIMAL(20,0) | BIGINT | NUMERIC(20) | |
小数类型 | DECIMAL[(M[,D])] | M:0~65 ; D:0~30 | DECIMAL[(M[,D])] | DECIMAL[(M[,D])] | DECIMAL[(M[,D])] |
FLOAT(p) | 1.175494351E-38 ~ 3.402823466E+38 | FLOAT | FLOAT | REAL | |
DOUBLE[(M,D)] | 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | DOUBLE | DOUBLE | DOUBLE PRECISION | |
时间类型 | DATE | 1000-01-01~9999-12-31 说明 格式为YYYY-MM-DD。 | DATE | DATE | DATE |
DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 说明 格式为YYYY-MM-DD hh:mm:ss[.fraction](UTC时间)。 | DATETIME | TIMESTAMP | TIMESTAMP | |
TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.999999 说明 格式为YYYY-MM-DD hh:mm:ss[.fraction](UTC时间)。 | TIMESTAMP | TIMESTAMP | TIMESTAMP WITH TIME ZONE | |
TIME[(fsp)] | -838:59:59.000000 ~ 838:59:59.000000 说明 格式为hh:mm:ss[.fraction](UTC时间)。 | TIME | VARCHAR | TIME WITHOUT TIME ZONE | |
YEAR[(4)] | 1901 ~ 2155,或0000. | INT | VARCHAR | INTEGER | |
字符串类型 | CHAR[(M)] | 0 ~ 255 字符 | VARCHAR | VARCHAR | CHAR |
VARCHAR(M) | 0 ~ 65,535 字符 | VARCHAR | VARCHAR | VARCHAR | |
BINARY[(M)] | 0 ~ 255 字节 | VARBINARY | VARCHAR | BYTEA | |
VARBINARY(M) | 0 ~ 65,535 字节 | VARBINARY | VARCHAR | BYTEA | |
TINYBLOB | 255 (2^8 - 1) 字节 | VARBINARY | VARCHAR | BYTEA | |
TINYTEXT | 255 (2^8 - 1) 字符 | VARCHAR | VARCHAR | TEXT | |
BLOB | 65,535 (2^16 - 1) 字节 | VARBINARY | VARCHAR | BYTEA | |
TEXT | 65,535 (2^16 - 1) 字符 | VARCHAR | VARCHAR | TEXT | |
MEDIUMBLOB | 16,777,215 (2^24 - 1) 字节 | VARBINARY | VARCHAR | BYTEA | |
MEDIUMTEXT | 16,777,215 (2^24 - 1) 字符 | VARCHAR | VARCHAR | TEXT | |
LONGBLOB | 4,294,967,295 or 4GB (2^32 - 1) 字节 | VARBINARY | VARCHAR | BYTEA | |
LONGTEXT | 4,294,967,295 or 4GB (2^32 - 1) 字符 | VARCHAR | VARCHAR | TEXT | |
ENUM('value1','value2',...) | 最多可包含65,535枚举值 | VARCHAR | VARCHAR | VARCHAR(128) | |
SET('value1','value2',...) | 最多可包含64个元素 | VARCHAR | VARCHAR | VARCHAR(128) | |
空间类型 | GEOMETRY | 任意几何类型的值 | VARBINARY | VARCHAR | POLYGON |
POINT | 无 | VARBINARY | VARCHAR | POINT | |
LINESTRING | 无 | VARBINARY | VARCHAR | PATH | |
POLYGON | 无 | VARBINARY | VARCHAR | POLYGON | |
MULTIPOINT | 无 | VARBINARY | VARCHAR | POLYGON | |
MULTILINESTRING | 无 | VARBINARY | VARCHAR | PATH | |
MULTIPOLYGON | 无 | VARBINARY | VARCHAR | POLYGON | |
GEOMETRYCOLLECTION | 任何几何类型的值的集合 | VARBINARY | VARCHAR | POLYGON | |
JSON类型 | JSON | 无 | JSON | VARCHAR | JSON |
目标实例为DataHub、Kafka(阿里云消息队列Kafka、自建Kafka)
类型 | 源实例的数据类型 | 数值范围 | DataHub的数据类型 | 阿里云消息队列Kafka、自建Kafka的数据类型 |
整数类型 | BIT[(M)] | 1 ~ 64 | BOOLEAN | STRING | 与MySQL、PolarDB MySQL的数据类型保持一致 |
TINYINT[(M)] | -128 ~ 127 | BIGINT | ||
TINYINT[(M)] [UNSIGNED] | 0 ~ 255 | BIGINT | ||
SMALLINT[(M)] | -32768 ~ 32767 | BIGINT | ||
SMALLINT[(M)] [UNSIGNED] | 0 ~ 65535 | BIGINT | ||
MEDIUMINT[(M)] | -8388608 ~ 8388607 | BIGINT | ||
MEDIUMINT[(M)] [UNSIGNED] | 0 ~ 16777215 | BIGINT | ||
INT[(M)] | -2147483648 ~ 2147483647 | BIGINT | ||
INT[(M)] [UNSIGNED] | 0 ~ 4294967295 | BIGINT | ||
BIGINT[(M)] | -9223372036854775808 ~ 9223372036854775807 | BIGINT | ||
BIGINT[(M)] [UNSIGNED] | 0 ~ 18446744073709551615 | BIGINT | ||
小数类型 | DECIMAL[(M[,D])] | M:0~65 ; D:0~30 | DECIMAL | |
FLOAT(p) | 1.175494351E-38 ~ 3.402823466E+38 | DOUBLE | ||
DOUBLE[(M,D)] | 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | DOUBLE | ||
时间类型 | DATE | 1000-01-01~9999-12-31 说明 格式为YYYY-MM-DD。 | TIMESTAMP | |
DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 说明 格式为YYYY-MM-DD hh:mm:ss[.fraction](UTC时间)。 | TIMESTAMP | ||
TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.999999 说明 格式为YYYY-MM-DD hh:mm:ss[.fraction](UTC时间)。 | TIMESTAMP | ||
TIME[(fsp)] | -838:59:59.000000 ~ 838:59:59.000000 说明 格式为hh:mm:ss[.fraction](UTC时间)。 | STRING | ||
YEAR[(4)] | 1901 ~ 2155,或0000. | STRING | ||
字符串类型 | CHAR[(M)] | 0 ~ 255 字符 | STRING | |
VARCHAR(M) | 0 ~ 65,535 字符 | STRING | ||
BINARY[(M)] | 0 ~ 255 字节 | STRING | ||
VARBINARY(M) | 0 ~ 65,535 字节 | STRING | ||
TINYBLOB | 255 (2^8 − 1) 字节 | STRING | ||
TINYTEXT | 255 (2^8 − 1) 字符 | STRING | ||
BLOB | 65,535 (2^16 − 1) 字节 | STRING | ||
TEXT | 65,535 (2^16 − 1) 字符 | STRING | ||
MEDIUMBLOB | 16,777,215 (2^24 − 1) 字节 | STRING | ||
MEDIUMTEXT | 16,777,215 (2^24 − 1) 字符 | STRING | ||
LONGBLOB | 4,294,967,295 or 4GB (2^32 − 1) 字节 | STRING | ||
LONGTEXT | 4,294,967,295 or 4GB (2^32 − 1) 字符 | STRING | ||
ENUM('value1','value2',...) | 最多可包含65,535元素 | STRING | ||
SET('value1','value2',...) | 最多可包含64个元素 | STRING | ||
空间类型 | GEOMETRY | 任意几何类型的值 | STRING | |
POINT | 无 | STRING | ||
LINESTRING | 无 | STRING | ||
POLYGON | 无 | STRING | ||
MULTIPOINT | 无 | STRING | ||
MULTILINESTRING | 无 | STRING | ||
MULTIPOLYGON | 无 | STRING | ||
GEOMETRYCOLLECTION | 任何几何类型的值的集合 | STRING | ||
JSON类型 | JSON | 无 | STRING |
目标实例为MaxCompute、Elasticsearch、ClickHouse
类型 | 源实例中的数据类型 | 数值范围 | MaxCompute | Elasticsearch | ClickHouse |
整数类型 | BIT[(M)] | 1 ~ 64 | BOOLEAN | STRING | BOOLEAN | LONG 说明 如果只有一个字节,建议在Elasticsearch中使用BOOLEAN。 | UInt8 |
TINYINT[(M)] | -128 ~ 127 | BIGINT | SHORT | Int8 | |
TINYINT[(M)] [UNSIGNED] | 0 ~ 255 | BIGINT | INTEGER | UInt8 | |
SMALLINT[(M)] | -32768 ~ 32767 | BIGINT | SHORT | Int16 | |
SMALLINT[(M)] [UNSIGNED] | 0 ~ 65535 | BIGINT | INTEGER | UInt16 | |
MEDIUMINT[(M)] | -8388608 ~ 8388607 | BIGINT | INTEGER | Int32 | |
MEDIUMINT[(M)] [UNSIGNED] | 0 ~ 16777215 | BIGINT | INTEGER | Int32 | |
INT[(M)] | -2147483648 ~ 2147483647 | BIGINT | INTEGER | Int32 | |
INT[(M)] [UNSIGNED] | 0 ~ 4294967295 | BIGINT | LONG | UInt32 | |
BIGINT[(M)] | -9223372036854775808 ~ 9223372036854775807 | BIGINT | LONG | Int64 | |
BIGINT[(M)] [UNSIGNED] | 0 ~ 18446744073709551615 | BIGINT | LONG | UInt64 | |
小数类型 | DECIMAL[(M[,D])] | M:0~65 ; D:0~30 | DOUBLE | DOUBLE 说明 如果DECIMAL的值带有小数点,那么为保障数据一致性,建议在Elasticsearch中使用TEXT。 | DECIMAL |
FLOAT(p) | 1.175494351E-38 ~ 3.402823466E+38 | DOUBLE | FLOAT | Float32 | |
DOUBLE[(M,D)] | 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | DOUBLE | DOUBLE | Float64 | |
时间类型 | DATE | 1000-01-01~9999-12-31 说明 格式为YYYY-MM-DD。 | DATETIME | DATE 说明 格式为YYYY-MM-DD,详情请参见date format的mapping定义。 | DATE32 |
DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 说明 格式为YYYY-MM-DD hh:mm:ss[.fraction](UTC时间)。 | DATETIME | DATE 说明 DATE格式为yyyy-MM-dd’T’HH:mm:ss(UTC时间)。如果精度为微秒,那么格式为yyyy-MM-dd’T’HH:mm:ss.S,详情请参见date format的mapping定义。 | DATETIME64 | |
TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.999999 说明 格式为YYYY-MM-DD hh:mm:ss[.fraction](UTC时间)。 | DATETIME | DATE 说明 DATE格式为yyyy-MM-dd’T’HH:mm:ss(UTC时间)。如果精度为微秒,那么格式为yyyy-MM-dd’T’HH:mm:ss.S,详情请参见date format的mapping定义。 | DATETIME 说明 不包含时区信息。 | |
TIME[(fsp)] | -838:59:59.000000 ~ 838:59:59.000000 说明 格式为hh:mm:ss[.fraction](UTC时间)。 | STRING | DATE 说明 格式为YYYY-MM-DD,详情请参见date format的mapping定义。 | STRING | |
YEAR[(4)] | 1901 ~ 2155,或0000. | STRING | DATE 说明 DATE格式为yyyy,详情请参见date format的mapping定义。 | Int16 | |
字符串类型 | CHAR[(M)] | 0 ~ 255 字符 | STRING | TEXT | STRING |
VARCHAR(M) | 0 ~ 65,535 字符 | STRING | TEXT | STRING | |
BINARY[(M)] | 0 ~ 255 字节 | STRING | BINARY | STRING | |
VARBINARY(M) | 0 ~ 65,535 字节 | STRING | BINARY | STRING | |
TINYBLOB | 255 (2^8 − 1) 字节 | STRING | BINARY | STRING | |
TINYTEXT | 255 (2^8 − 1) 字符 | STRING | TEXT | STRING | |
BLOB | 65,535 (2^16 − 1) 字节 | STRING | BINARY | STRING | |
TEXT | 65,535 (2^16 − 1) 字符 | STRING | TEXT | STRING | |
MEDIUMBLOB | 16,777,215 (2^24 − 1) 字节 | STRING | BINARY | STRING | |
MEDIUMTEXT | 16,777,215 (2^24 − 1) 字符 | STRING | TEXT | STRING | |
LONGBLOB | 4,294,967,295 or 4GB (2^32 − 1) 字节 | STRING | BINARY | STRING | |
LONGTEXT | 4,294,967,295 or 4GB (2^32 − 1) 字符 | STRING | TEXT | STRING | |
ENUM('value1','value2',...) | 最多可包含65,535枚举值 | STRING | KEYWORD | ENUM | |
SET('value1','value2',...) | 最多可包含64个元素 | STRING | KEYWORD | STRING | |
空间类型 | GEOMETRY | 任意几何类型的值 | STRING | GEO_SHAPE | STRING |
POINT | 无 | STRING | GEO_POINT | STRING | |
LINESTRING | 无 | STRING | GEO_SHAPE | STRING | |
POLYGON | 无 | STRING | GEO_SHAPE | STRING | |
MULTIPOINT | 无 | STRING | GEO_SHAPE 说明 如果只有一个字节,建议在Elasticsearch中使用BOOLEAN。 | STRING | |
MULTILINESTRING | 无 | STRING | GEO_SHAPE | STRING | |
MULTIPOLYGON | 无 | STRING | GEO_SHAPE | STRING | |
GEOMETRYCOLLECTION | 任何几何类型的值的集合 | STRING | GEO_SHAPE | STRING | |
JSON类型 | JSON | 无 | STRING | OBJECT 说明 如果只有一个字节,建议在Elasticsearch中使用BOOLEAN。 | STRING |
目标实例为Tablestore
源实例中的数据类型 | Tablestore对应的数据类型 |
INTEGER | INTEGER |
INT | INTEGER |
SMALLINT | INTEGER |
TINYINT | INTEGER |
MEDIUMINT | INTEGER |
BIGINT | INTEGER |
DECIMAL | DOUBLE |
NUMERIC | DOUBLE |
FLOAT | DOUBLE |
DOUBLE | DOUBLE |
BIT | BOOLEAN |
DATE | STRING或INTEGER 说明 默认为STRING。 |
TIMESTAMP | |
DATETIME | |
TIME | |
YEAR | |
CHAR | STRING |
VARCHAR | STRING |
BINARY | BINARY |
VARBINARY | BINARY |
TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB | BINARY |
TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT | STRING |
ENUM | STRING |
SET | STRING |
GEOMETRY | STRING |
POINT | STRING |
LINESTRING | STRING |
POLYGON | STRING |
MULTIPOINT | STRING |
MULTILINESTRING | STRING |
MULTIPOLYGON | STRING |
GEOMETRYCOLLECTION | STRING |
JSON | STRING |
目标实例为Lindorm
源实例中的数据类型 | Lindorm对应的数据类型 |
BOOLEAN | BOOLEAN |
BIT | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INTEGER | INTEGER |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DECIMAL | DECIMAL |
CHAR/VARCHAR/TEXT/TINYTEXT/MEDIUMTEXT/LONGTEXT | CHAR/VARCHAR |
BINARY | BINARY |
BLOB | VARBINARY |
VARBINAY | VARBINARY |
TIMESTAMP | TIMESTAMP |
YEAR | INTEGER |
DATE | VARCHAR |
DATETIME | VARCHAR 重要
|
TIME | VARCHAR |
JSON | JSON |
以Oracle为源的数据迁移
当源实例为自建Oracle,且目标实例为异构数据库时(包括MySQL、PolarDB MySQL、云原生数据仓库AnalyticDB MySQL版 3.0、云原生数据仓库AnalyticDB PostgreSQL版、PolarDB PostgreSQL版(兼容Oracle)),两者间的数据类型映射关系如下:
如源实例中待迁移数据范围超出DTS所支持的范围,则会导致目标实例中的所迁入数据的精度降低。
类型 | Oracle的数据类型 | 数值范围 | MySQL、PolarDB MySQL、PolarDB-X的数据类型 | RDS PPAS的数据类型 | 云原生数据仓库AnalyticDB MySQL版 3.0的数据类型 | 云原生数据仓库AnalyticDB PostgreSQL版的数据类型 | PolarDB PostgreSQL版(兼容Oracle)的数据类型 |
数字类型 | NUMBER(p,s) | 1 ~ 22 字节。 p代表精度位,取值范围是1 ~ 38。 s代表小数位,取值范围是-84 ~ 127。 | DECIMAL[(p[,s])] | NUMBER[(p[,s])] | DECIMAL | TINYINT | SMALLINT | INTEGER | BIGINT | DECIMAL | TINYINT | SMALLINT | INTEGER | BIGINT | NUMBER(p,s) |
FLOAT(p) | 1 ~ 22 字节。 p代表指针变量,取值范围是1 ~ 126 bit。 | DOUBLE | DOUBLE PRECISION | DOUBLE | DOUBLE PRECISION | DOUBLE PRECISION | |
BINARY_FLOAT | 32-bit的浮点数,即4字节。 | DECIMAL(65,8) | REAL | DOUBLE | DOUBLE PRECISION | REAL | |
BINARY_DOUBLE | 64-bit的浮点数,即8字节。 | DOUBLE | DOUBLE PRECISION | DOUBLE | DOUBLE PRECISION | DOUBLE PRECISION | |
日期类型 | DATE | 无 | DATETIME | DATE | DATETIME | TIMESTAMP(0) | DATE |
TIMESTAMP [(fractional_seconds_precision)] | 无 | DATETIME[(fractional_seconds_precision)] | TIMESTAMP [(fractional_seconds_precision)] | DATETIME | TIMESTAMP | TIMESTAMP [(fractional_seconds_precision)] | |
TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE | 无 | DATETIME[(fractional_seconds_precision)] | TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE | TIMESTAMP | TIMESTAMP WITH TIME ZONE | TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE | |
TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE | 无 | DATETIME[(fractional_seconds_precision)] | TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE | DATETIME | TIMESTAMP WITH TIME ZONE | TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE | |
INTERVAL YEAR [(year_precision)] TO MONTH | 无 | 不支持 | 不支持 | VARCHAR | VARCHAR(32) | INTERVAL | |
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)] | 无 | 不支持 | 不支持 | VARCHAR | VARCHAR(32) | INTERVAL | |
字符串类型 | CHAR [(size [BYTE | CHAR])] | 2000 字节。 | CHAR[(n)] | CHAR[(n)] | VARCHAR | CHAR | CHAR [(size [BYTE | CHAR])] |
NCHAR[(size)] | 2000 字节。 | NATIONAL CHAR[(n)] | NCHAR[(n)] | VARCHAR | VARCHAR | NCHAR[(size)] | |
VARCHAR2(size [BYTE | CHAR]) | 当MAX_STRING_SIZE = EXTENDED时,最大长度为32767字节; 当MAX_STRING_SIZE = STANDARD,最大长度为4000字节。 | VARCHAR(n) | VARCHAR2[(n)] | VARCHAR | VARCHAR | VARCHAR2(size [BYTE | CHAR]) | |
NVARCHAR2(size) | 当MAX_STRING_SIZE = EXTENDED时,最大长度为32767字节; 当MAX_STRING_SIZE = STANDARD,最大长度为4000字节。 | NATIONALVARCHAR[(n)] | VARCHAR2[(n)] | VARCHAR | VARCHAR | NVARCHAR2(size) | |
LONG | 最大长度2G(2^31-1)。 | LONGTEXT | LONG | VARCHAR | TEXT | LONG | |
RAW(size) | 最大长度32767 字节或2000字节。 | VARBINARY(2000) | RAW(size) | VARBINARY | BYTEA | RAW(size) | |
LONG RAW | 最大长度2G。 | LONGBLOB | LONG RAW | VARBINARY | BYTEA | LONG RAW | |
CLOB | 最大长度(4 GB - 1)*DB_BLOCK_SIZE。 | LONGTEXT | CLOB | VARCHAR | TEXT | CLOB | |
NCLOB | 最大长度(4 GB - 1)*DB_BLOCK_SIZE。 | LONGTEXT | NCLOB | VARCHAR | TEXT | CLOB | |
BLOB | 最大长度(4 GB - 1)*DB_BLOCK_SIZE。 | LONGBLOB | BLOB | VARBINARY | BYTEA | BLOB | |
BFILE | 4G。 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | |
JSON类型 | JSON | 最大长度32MB。 | 不支持 | 不支持 | JSON | JSON | JSON |
ROWID类型 | ROWID | 64字符。 | 不支持 | 不支持 | ROWID | OID | VARCHAR |
空间类型 | 需要自定义 | 不支持 |
当目标实例为MySQL、PolarDB MySQL、PolarDB-X时:
对于CHAR类型,如长度定义超过255,DTS会将类型转换为VARCHAR(n)。
由于MySQL本身不支持类似Oracle中的BFILE、INTERVAL YEARTO MONTH和INTERVAL DAYTO SECOND数据类型,DTS在进行结构迁移时,无法在MySQL中找到合适的数据类型进行映射,因此这三种类型不会进行转化。
迁移时如果表中含有这三种类型,会导致结构迁移失败,在选择迁移对象时,对需要迁移的对象中这三种类型的列进行排除。
由于MySQL的TIMESTAMP类型不包含时区,而Oracle的TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE默认带有时区信息,DTS在迁移这两种类型的数据时,会将其转换成UTC时区后存入目标实例。
当目标实例为RDS PPAS时,
由于RDS PPAS不支持TIMESTAMP[(fractional_seconds_precision)] WITH LOCAL TIME ZONE,DTS在迁移这种类型的数据时,会将其转换成UTC时区后存入目标RDS PPAS的TIMESTAMP[(fractional_seconds_precision)] WITH TIME ZONE中。
当目标实例为云原生数据仓库AnalyticDB PostgreSQL版时,
对于云原生数据仓库AnalyticDB PostgreSQL版不支持字段类型,DTS会将其直接转为BYTEA,如果转换不了则将数据内容置为NULL。
以SQL Server为源的数据迁移
当源实例为SQL Server(包括自建SQL Server、RDS SQL Server),且目标实例为异构数据库时(包括云原生数据仓库AnalyticDB MySQL版 3.0、云原生数据仓库AnalyticDB PostgreSQL版、PostgreSQL、MySQL),两者间的数据类型映射关系如下:
如源实例中待迁移数据范围超出DTS所支持的范围,则会导致目标实例中的所迁入数据的精度降低。
类型 | SQL Server的数据类型 | 数值范围 | 云原生数据仓库AnalyticDB MySQL版 3.0的数据类型 | 云原生数据仓库AnalyticDB PostgreSQL版的数据类型 | PostgreSQL的数据类型 | MySQL的数据类型 |
整数类型 | BIT | 可以取值为1、0或NULL的INTEGER数据类型 | BOOLEAN | BIT(1) | BIT | |
TINYINT | 0至255 | TINYINT | SMALLINT | TINYINT | ||
SMALLINT | -2^15(-32768)至2^15-1(32767) | SMALLINT | SMALLINT | SMALLINT | ||
INT | -2^31(-2147483648)至2^31-1(2147483647) | INTEGER | INTEGER | INT | ||
BIGINT | -2^63(-9223372036854775808)至2^63-1(9223372036854775807) | BIGINT | BIGINT | BIGINT | ||
小数类型 | NUMERIC[ (p[ ,s] )] | -10^38+1至10^38-1; 1<=p<=38 | DECIMAL | DECIMAL | DECIMAL[ (p[ ,s] )] | |
DECIMAL[ (p[ ,s] )] | -10^38+1至10^38-1; 1<= p<=38 | DECIMAL | DECIMAL | DECIMAL[ (p[ ,s] )] | ||
FLOAT | -1.79E+308至-2.23E -308、0 以及2.23E-308至1.79E+308 | DOUBLE | DOUBLE PRECISION | DOUBLE | ||
REAL | -3.40E+38至-1.18E- 38、0 以及1.18E-38至3.40E +38 | FLOAT | REAL | DOUBLE | ||
货币类型 | MONEY | -922,337,203,685,477.5808至922,337,203,685,477.5807 | DECIMAL(19, 4) | DECIMAL(19, 4) | DECIMAL | |
SMALLMONEY | -214,748.3648至214,748.3647 | DECIMAL(10, 4) | DECIMAL(10, 4) | DECIMAL | ||
日期类型 | DATE | 0001-01-01至9999-12-31 | DATE | DATE | DATE | |
DATETIME | 日期范围为1753年1月1日至9999年12月31日; 时间范围为00:00:00至 23:59:59.997 | DATETIME | TIMESTAMP(3) WITHOUT TIME ZONE | DATETIME | ||
DATETIME2[ (fractional seconds precision) ] | 日期范围为公元1年1月1日至公元9999年12月31日; 时间范围为00:00:00至23:59:59.9999999 | DATETIME | TIMESTAMP(7) WITHOUT TIME ZONE | DATETIME | ||
DATETIMEOFFSET [ (fractional seconds precision) ] | 日期范围公元1年1月1日至公元9999年12月31日; 时间范围为00:00:00至 23:59:59.9999999; 时区偏移量范围-14:00至+14:00 | TIMESTAMP | TIMESTAMP(7) WITH TIME ZONE | DATETIME | ||
SMALLDATETIME | 秒始终为零 (:00),并且不带秒小数部分 | DATETIME | TIMESTAMP WITHOUT TIME ZONE | DATETIME | ||
TIME [ (fractional second scale) ] | 00:00:00.0000000至23:59:59.9999999 | TIME | TIME(7) WITH TIME ZONE | TIME | ||
字符串类型 | BINARY [ ( n ) ] | n取值范围为1~8,000 | VARBINARY | BYTEA | BINARY | |
VARBINARY [ ( n | max) ] | n取值范围为1~8,000;max代表最大存储大小是2^31-1 个字节 | VARBINARY | BYTEA | VARBINARY | ||
CHAR [ ( n ) ] | n取值范围为1~8,000,存储大小为n个字节 | VARCHAR | CHARACTER |
| ||
VARCHAR [ ( n | max ) ] | n取值范围为1~8,000;max代表最大存储大小是 2^31-1 个字节(2GB) | VARCHAR | CHARACTER |
| ||
NCHAR [ ( n ) ] | 以双字节为单位,n 取值范围为1至4,000,存储大小为 n字节的两倍 | VARCHAR | CHARACTER VARYING | VARCHAR(200) | ||
NVARCHAR [ ( n | max ) ] | 以双字节为单位,n取值范围为1至4,000,max代表最大存储大小是2^30-1个字符(2 GB) | VARCHAR | CHARACTER VARYING |
| ||
NTEXT | 长度可变的Unicode 数据,字符串最大长度为2^30-1(1073741823)个字节 | VARCHAR | TEXT | TEXT | ||
TEXT | 字符串最大长度为2^31-1(2147483647)个字节 | VARCHAR | TEXT | TEXT | ||
IMAGE | 长度可变的二进制数据,从0到2^31-1 (2147483647)个字节。 | VARBINARY | BYTEA | BLOB | ||
空间和几何类型 | GEOGRAPHY | 无 | VARCHAR | 不支持 | BLOB | |
GEOMETRY | 无 | VARCHAR | 不支持 | BLOB | ||
XML类型 | XML ( [ CONTENT | DOCUMENT ] xml_schema_collection ) | 无 | VARCHAR | XML | TEXT | |
其他类型 | UNIQUEIDENTIFIER | 无 | VARCHAR | CHARACTER(36) | VARCHAR(200) | |
SQL_VARIANT | 无 | 不支持 | 不支持 | VARCHAR(200) | ||
HIERARCHYID | 无 | 不支持 | 不支持 | VARCHAR(200) | ||
SYSNAME | 无 | VARCHAR | CHARACTER VARYING(128) | VARCHAR(200) |
以自建TiDB为源的数据迁移
当源实例为自建TiDB,且目标实例为异构数据库时(如MySQL、AnalyticDB MySQL 3.0),两者间的数据类型映射关系如下:
TiDB数据类型 | MySQL的数据类型 |
BIGINT | BIGINT |
BIGINT UNSIGNED | DECIMAL(20,0) |
BINARY | BINARY |
BIT | BIT |
BOOL\ BOOLEAN | TINYINT |
CHAR | CHAR |
DATE | DATE |
DATETIME | DATETIME |
DECIMAL | DECIMAL |
DOUBLE | DOUBLE |
ENUM | ENUM |
FLOAT | FLOAT |
INT | INT |
INT UNSIGNED | BIGINT |
INTEGER | INTEGER |
JSON | JSON |
MEDIUMBLOB/LONGBLOB TINYBLOB/BLOB/ | MEDIUMBLOB/LONGBLOB TINYBLOB/BLOB/ |
MEDIUMINT | MEDIUMINT |
SET | SET |
SMALLINT | SMALLINT |
SMALLINT UNSIGNED | INT |
TEXT/LONGTEXT | TEXT/LONGTEXT |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
TINYINT | TINYINT |
TINYINT UNSIGNED | SMALLINT |
VARBINARY | VARBINARY |
VARCHAR | VARCHAR |
YEAR | YEAR |
以DB2 for LUW为源的数据迁移
当源实例为DB2 for LUW,且目标实例为异构数据库时(包括MySQL),两者间的数据类型映射关系如下:
如源实例中待迁移数据范围超出DTS所支持的范围,则会导致目标实例中的所迁入数据的精度降低。
类型 | DB2 for LUW数据类型 | 数值范围 | MySQL的数据类型 |
整数类型 | SMALLINT | -32,768~+32,767 | SMALLINT |
INTEGER | -2,147,483,648~+2,147,483,647 | INT | |
BIGINT | -9,223,372,036,854,775,808~ +9,223,372,036,854,775,807 | BIGINT | |
小数类型 | DECIMAL(precision-integer, scale-integer) | p<=38 | DECIMAL |
FLOAT(integer) | 取值范围为1~53,取值在1~24表示为单精度,取值在25~53表示为双精度 | FLOAT | |
DECFLOAT(precision-integer) | 无 | DECIMAL(65,10) | |
日期类型 | DATE | 0001-01-01~9999-12-31 | DATE |
TIME | 00:00:00~24:00:00 | TIME | |
TIMESTAMP(integer) | 0001-01-01-00.00.00.000000000000~9999-12-31-24.00.00.000000000000;0<=p<= 12 | DATETIME | |
字符串类型 | CHARACTER(integer) | 254 | CHAR | VARCHAR |
VARCHAR(integer) | 32,672 | VARCHAR | |
CHARACTER(integer) FOR BIT DATA | 254 | BLOB | |
CLOB | 2,147,483,647 | LONGTEXT | |
GRAPHIC(integer) | 127 | CHAR(length*4) | |
VARGRAPHIC(integer) | 16,336 | CHAR(length*4) | |
DBCLOB(integer) | 1,073,741,823 | VARCHAR | LONGTEXT | |
BLOB | 2,147,483,647 | LONGBLOB | |
其他类型 | XML | 2,147,483,647 | VARCHAR | LONGTEXT |
以Db2 for i为源的数据迁移
当源实例为DB2 for i,且目标实例为异构数据库时(包括MySQL),两者间的数据类型映射关系如下:
如源实例中待迁移数据范围超出DTS所支持的范围,则会导致目标实例中的所迁入数据的精度降低。
类型 | Db2 for i 数据类型 | 数值范围 | MySQL中的数据类型 |
整数类型 | SMALLINT | -32,768~+32,767 | SMALLINT |
INTEGER | -2,147,483,648~+2,147,483,647 | INT | |
BIGINT | -9,223,372,036,854,775,808~ +9,223,372,036,854,775,807 | BIGINT | |
小数类型 | DECIMAL(precision-integer, scale-integer) | p<=63 | DECIMAL |
NUMERIC | 无 | DECIMAL | |
FLOAT(integer) | 无 | FLOAT | |
DECFLOAT(precision-integer) | 无 | DECIMAL(65,10) | |
日期类型 | DATE | 0001-01-0~9999-12-31 | DATE |
TIME | 00:00:00~24:00:00 | TIME | |
TIMESTAMP(integer) | 0001-01-01-00.00.00.000000000000~9999-12-31-24.00.00.000000000000;0 <=p <=12 | DATETIME | |
字符串类型 | CHAR(integer) | 32,765 | CHAR | VARCHAR |
VARCHAR(integer) | 32,739 | VARCHAR | |
CHAR(integer) FOR BIT DATA | 无 | BLOB | |
CLOB | 2,147,483,647 | LONGTEXT | |
GRAPHIC(integer) | 16,382 | CHAR | |
VARGRAPHIC(integer) | 16,369 | VARCHAR | |
DBCLOB(integer) | 1,073,741,823 | LONGTEXT | |
BINARY | 32,765 | BINARY | |
VARBIN | 32,739 | VARBINARY | |
BLOB | 2,147,483,647 | LONGBLOB | |
其他类型 | DATALINK | 无 | VARCHAR | LONGTEXT |
ROWID | 40 | VARCHAR | LONGTEXT | |
XML | 2,147,483,647 | VARCHAR | LONGTEXT |
以Teradata为源的数据迁移
当源实例为Teradata,且目标实例为异构数据库时(如云原生数据仓库AnalyticDB PostgreSQL版),两者间的数据类型映射关系如下:
Teradata数据类型 | AnalyticDB PostgreSQL中的数据类型 |
BYTEINT | SMALLINT |
SMALLINT | SMALLINT |
BIGINT | BIGINT |
INTEGER | INTEGER |
DATE | DATE |
JSON | JSON |
XML | XML |
CLOB | text |
Float | real |
CHAR | CHAR |
VARCHAR | VARCHAR |
Timestamp | Timestamp |
TIME | TIME |
Timestamp With Time Zone | Timestamp With Time Zone |
Time With Time Zone | Time With Time Zone |
Decimal | Decimal |
Number | numeric |
BYTE | bytea |
VARBYTE | bytea |
BLOB | bytea |
PERIOD | varchar(100) |
INTERVAL | varchar(100) |
Teradata数据类型 | AnalyticDB PostgreSQL中的数据类型 |
SMALLINT | SMALLINT |
INTEGER | INT |
BIGINT | BIGINT |
DECIMAL(precision-integer, scale-integer) | DECIMAL |
NUMERIC | DECIMAL |
FLOAT(integer) | FLOAT |
DECFLOAT(precision-integer) | DECIMAL(65,10) |
DATE | DATE |
TIME | TIME |
TIMESTAMP(integer) | DATETIME |
CHAR(integer) | CHAR | VARCHAR |
VARCHAR(integer) | VARCHAR |
CHAR(integer) FOR BIT DATA | BLOB |
CLOB | LONGTEXT |
GRAPHIC(integer) | CHAR |
VARGRAPHIC(integer) | VARCHAR |
DBCLOB(integer) | LONGTEXT |
BINARY | BINARY |
VARBIN | VARBINARY |
BLOB | LONGBLOB |
DATALINK | VARCHAR | LONGTEXT |
ROWID | VARCHAR | LONGTEXT |
XML | VARCHAR | LONGTEXT |