异构数据库间的数据类型映射关系

不同类型的数据库(异构数据库)支持的数据类型不一样,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

重要
  • 建议在目标端将其映射为VARCHAR类型。

  • 若您需要将其映射为TIMESTAMP类型,可能会因为时区问题而导致数据不一致。建议您在配置任务过程中,使用ETL功能来确保数据的一致性。

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

  • 当length > 65535时:TEXT

  • 当65535 ≥ length > 255时:VARCHAR

  • 其他:CHAR

VARCHAR [ ( n | max ) ]

n取值范围为1~8,000;max代表最大存储大小是 2^31-1 个字节(2GB)

VARCHAR

CHARACTER

  • 当length > 65535时:TEXT

  • 其他:VARCHAR

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

  • 当length > 65535时:TEXT

  • 其他:VARCHAR

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