不同类型的数据库(异构数据库)支持的数据类型不一样,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(UTC时间)。 |
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(UTC时间)。 |
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(UTC时间)。 |
DATETIME |
DATE
说明
格式为YYYY-MM-DD(UTC时间),详情请参见 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(UTC时间),详情请参见 date format的mapping定义 。 |
STRING |
|
YEAR[(4)] |
1901 ~ 2155,或0000. |
STRING |
DATE
说明
DATE格式为yyyy(UTC时间),详情请参见 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 |
以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版、MySQL),两者间的数据类型映射关系如下:
如源实例中待迁移数据范围超出DTS所支持的范围,则会导致目标实例中的所迁入数据的精度降低。
类型 |
SQL Server的数据类型 |
数值范围 |
云原生数据仓库AnalyticDB MySQL版 3.0 的数据类型 |
云原生数据仓库AnalyticDB 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 |
FLOAT |
|
货币类型 |
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),两者间的数据类型映射关系如下:
TiDB数据类型 |
MySQL的数据类型 |
BIGINT |
BIGINT |
BINARY |
BINARY |
BIT |
BIT |
BOOL\ BOOLEAN |
TINYINT |
CHAR |
CHAR |
DATE |
DATE |
DATETIME |
DATETIME |
DECIMAL |
DECIMAL |
DOUBLE |
DOUBLE |
ENUM |
ENUM |
FLOAT |
FLOAT |
INT |
INT |
INTEGER |
INTEGER |
JSON |
JSON |
MEDIUMBLOB/LONGBLOB TINYBLOB/BLOB/ |
MEDIUMBLOB/LONGBLOB TINYBLOB/BLOB/ |
MEDIUMINT |
MEDIUMINT |
SET |
SET |
SMALLINT |
SMALLINT |
TEXT/LONGTEXT |
TEXT/LONGTEXT |
TIME |
TIME |
TIMESTAMP |
TIMESTAMP |
TINYINT |
TINYINT |
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 |