不同类型的数据库(异构数据库)支持的数据类型不一样,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 版、云原生数据仓库AnalyticDB PostgreSQL版
类型  | 源实例的数据类型  | 数值范围  | 云原生数据仓库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 说明  ClickHouse中DATE类型的取值范围小于MySQL中的DATE类型,若ClickHouse也使用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  | DATE 说明  DATE格式为yyyy-MM-dd'T'HH:mm:ss(UTC时间)。如果精度为微秒,那么格式为yyyy-MM-dd'T'HH:mm:ss.S,详情请参见date format的mapping定义。  | DATETIME64 说明  ClickHouse中DATETIME类型的取值范围小于MySQL中的DATETIME类型,若ClickHouse也使用DATETIME类型,则可能会导致数据写入失败。  | |
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  | KEYWORD  | STRING  | 
VARCHAR(M)  | 0 ~ 65,535 字符  | STRING  | 
  | 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  | 
BIGINT UNSIGNED 重要  仅支持在BIGINT取值范围内(-9223372036854775808 ~ 9223372036854775807)的数据。  | 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  | 请根据目标Lindorm实例的版本进行选择。 
  | 
DATETIME  | VARCHAR 重要  
  | 
TIME  | 请根据目标Lindorm实例的版本进行选择。 
  | 
JSON  | JSON  | 
目标实例为Oracle
类型  | 源实例的数据类型  | 数值范围  | Oracle的数据类型  | 
整数类型  | BIT[(M)]  | 1 ~ 64  | NUMBER(2,0)  | 
TINYINT[(M)]  | -128 ~ 127  | NUMBER(3,0)  | |
TINYINT[(M)] [UNSIGNED]  | 0 ~ 255  | NUMBER(3,0)  | |
SMALLINT[(M)]  | -32768 ~ 32767  | NUMBER(5,0)  | |
SMALLINT[(M)] [UNSIGNED]  | 0 ~ 65535  | NUMBER(5,0)  | |
MEDIUMINT[(M)]  | -8388608 ~ 8388607  | NUMBER(7,0)  | |
MEDIUMINT[(M)] [UNSIGNED]  | 0 ~ 16777215  | NUMBER(7,0)  | |
INT[(M)]  | -2147483648 ~ 2147483647  | INT  | |
INT[(M)] [UNSIGNED]  | 0 ~ 4294967295  | NUMBER(10,0)  | |
BIGINT[(M)]  | -9223372036854775808 ~ 9223372036854775807  | NUMBER(20,0)  | |
BIGINT[(M)] [UNSIGNED]  | 0 ~ 18446744073709551615  | NUMBER(20,0)  | |
小数类型  | DECIMAL[(M[,D])]  | M:0~65 ; D:0~30  | NUMBER(M,D) 说明  如果精度和小数精度缺失,转换为NUMBER。  | 
FLOAT(p)  | 1.175494351E-38 ~ 3.402823466E+38  | FLOAT  | |
DOUBLE[(M,D)]  | 2.2250738585072014E-308 ~ 1.7976931348623157E+308  | DOUBLE  | |
时间类型  | DATE  | 1000-01-01 ~ 9999-12-31 说明  格式为YYYY-MM-DD。  | 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时间)。  | TIMESTAMP[(fsp)] 说明  如果精度缺失,转换为TIMESTAMP(0)。  | |
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[(fsp)] WITH LOCAL TIME ZONE 说明  如果精度缺失,转换为TIMESTAMP[(0)] WITH LOCAL TIME ZONE。  | |
TIME[(fsp)]  | -838:59:59.000000 ~ 838:59:59.000000 说明  格式为hh:mm:ss[.fraction](UTC时间)。  | 不支持  | |
YEAR[(4)]  | 1901 ~ 2155,或0000  | INT  | |
字符串类型  | CHAR[(M)]  | 0 ~ 255 字符  | CHAR[(M)] 说明  如果长度缺失,转换为CHAR(1)。  | 
VARCHAR(M)  | 0 ~ 65,535 字符  | VARCHAR(M)  | |
BINARY[(M)]  | 0 ~ 255 字节  | RAW(M) 说明  如果长度缺失,转换为RAW(1)。  | |
VARBINARY(M)  | 0 ~ 65,535 字节  | RAW(M)  | |
TINYBLOB  | 255 (2^8 - 1) 字节  | BLOB  | |
TINYTEXT  | 255 (2^8 - 1) 字符  | TEXT  | |
BLOB  | 65,535 (2^16 - 1) 字节  | BLOB  | |
TEXT  | 65,535 (2^16 - 1) 字符  | TEXT  | |
MEDIUMBLOB  | 16,777,215 (2^24 - 1) 字节  | BLOB  | |
MEDIUMTEXT  | 16,777,215 (2^24 - 1) 字符  | TEXT  | |
LONGBLOB  | 4,294,967,295 or 4GB (2^32 - 1) 字节  | BLOB  | |
LONGTEXT  | 4,294,967,295 or 4GB (2^32 - 1) 字符  | TEXT  | |
ENUM('value1','value2',...)  | 最多可包含65,535枚举值  | 不支持  | |
SET('value1','value2',...)  | 最多可包含64个元素  | 不支持  | |
空间类型  | GEOMETRY  | 任意几何类型的值  | 不支持  | 
POINT  | 无  | 不支持  | |
LINESTRING  | 无  | 不支持  | |
POLYGON  | 无  | 不支持  | |
MULTIPOINT  | 无  | 不支持  | |
MULTILINESTRING  | 无  | 不支持  | |
MULTIPOLYGON  | 无  | 不支持  | |
GEOMETRYCOLLECTION  | 任何几何类型的值的集合  | 不支持  | |
JSON类型  | JSON  | 无  | CLOB  | 
以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])] 说明  若精度位和小数位均不存在,则映射为DECIMAL(65,30)。  | NUMBER[(p[,s])]  | DECIMAL | TINYINT | SMALLINT | INTEGER | BIGINT  | DECIMAL | TINYINT | SMALLINT | INTEGER | BIGINT  | NUMBER(p,s)  | 
FLOAT(p)  | 1 ~ 22 字节。 p代表指针变量,取值范围是1 ~ 126 bit。  | FLOAT  | DOUBLE PRECISION  | DOUBLE  | DOUBLE PRECISION  | DOUBLE PRECISION  | |
BINARY_FLOAT  | 32-bit的浮点数,即4字节。  | FLOAT  | 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(1)。  | CHAR[(n)]  | VARCHAR  | CHAR  | CHAR [(size [BYTE | CHAR])]  | 
NCHAR[(size)]  | 2000 字节。  | NATIONAL CHAR[(n)] 说明  若长度不存在,则映射为NATIONAL CHAR(1)。  | NCHAR[(n)]  | VARCHAR  | VARCHAR  | NCHAR[(size)]  | |
VARCHAR(size [BYTE | CHAR])  | 当MAX_STRING_SIZE = EXTENDED时,最大长度为32767字节; 当MAX_STRING_SIZE = STANDARD,最大长度为4000字节。  | VARCHAR(n)  | VARCHAR(n)  | VARCHAR(n)  | VARCHAR(n)  | VARCHAR(n)  | |
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字节。  | BINARY(2*size)  | 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  | 
UROWID  | 64字符。  | 不支持  | 不支持  | 不支持  | 不支持  | 不支持  | |
空间类型  | 需要自定义  | 不支持  | |||||
当目标实例为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、PolarDB MySQL版集群),两者间的数据类型映射关系如下:
如源实例中待迁移数据范围超出DTS所支持的范围,则会导致目标实例中的所迁入数据的精度降低。
类型  | SQL Server的数据类型  | 数值范围  | 云原生数据仓库AnalyticDB MySQL版 3.0的数据类型  | PostgreSQL、云原生数据仓库AnalyticDB PostgreSQL版的数据类型  | MySQL、PolarDB MySQL的数据类型  | 
整数类型  | BIT  | 可以取值为1、0或NULL的INTEGER数据类型  | BOOLEAN  | BIT(1)  | BIT(1)  | 
TINYINT  | 0至255  | TINYINT  | SMALLINT  | TINYINT UNSIGNED  | |
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(19, 4)  | 
SMALLMONEY  | -214,748.3648至214,748.3647  | DECIMAL(10, 4)  | DECIMAL(10, 4)  | DECIMAL(10, 4)  | |
日期类型  | 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(3)  | |
DATETIME2[ (fractional seconds precision) ]  | 日期范围为公元1年1月1日至公元9999年12月31日; 时间范围为00:00:00至23:59:59.9999999  | DATETIME  | TIMESTAMP(7) WITHOUT TIME ZONE  | DATETIME(p) 说明  默认精度为6。  | |
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(p) 说明  默认精度为6。  | |
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(p)  | |
TIMESTAMP[(fsp)]  | 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.999999 说明  格式为YYYY-MM-DD hh:mm:ss[.fraction](UTC时间)。  | VARBINARY(8)  | BYTEA  | VARBINARY(8)  | |
字符串类型  | BINARY [ ( n ) ]  | n取值范围为1~8,000  | VARBINARY  | BYTEA  | 
  | 
VARBINARY [ ( n | max) ]  | n取值范围为1~8,000;max代表最大存储大小是2^31-1 个字节  | VARBINARY  | BYTEA  | 
  | |
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  | LONGTEXT  | |
TEXT  | 字符串最大长度为2^31-1(2147483647)个字节  | VARCHAR  | TEXT  | LONGTEXT  | |
IMAGE  | 长度可变的二进制数据,从0到2^31-1 (2147483647)个字节。  | VARBINARY  | BYTEA  | LONGBLOB  | |
空间和几何类型  | GEOGRAPHY  | 无  | VARCHAR  | 不支持  | BLOB  | 
GEOMETRY  | 无  | VARCHAR  | 不支持  | BLOB  | |
XML类型  | XML ( [ CONTENT | DOCUMENT ] xml_schema_collection )  | 无  | VARCHAR  | XML  | LONGTEXT  | 
其他类型  | UNIQUEIDENTIFIER  | 无  | VARCHAR  | CHARACTER(36)  | CHAR(36)  | 
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  |