When DTS synchronizes data between heterogeneous databases, it automatically maps source data types to compatible types in the destination database during initial schema synchronization. This topic lists the mappings for each supported source database so you can evaluate the impact on your data before starting a synchronization task.
If a source value falls outside the range that DTS supports for a given mapping, DTS reduces the data precision when writing to the destination instance.
Overview
The following source databases are covered:
MySQL (RDS for MySQL, self-managed MySQL, PolarDB for MySQL)
Oracle (self-managed Oracle)
PostgreSQL (self-managed PostgreSQL, RDS for PostgreSQL)
SQL Server (self-managed SQL Server, RDS for SQL Server)
Db2 for LUW
Db2 for i
TiDB (self-managed TiDB)
Data synchronization from a MySQL source
AnalyticDB for MySQL and AnalyticDB for PostgreSQL
When synchronizing to AnalyticDB for MySQL:
DTS converts an INT field with the AUTO_INCREMENT attribute to BIGINT in the destination.
If a table used in a JOIN operation contains both INT and BIGINT fields, use the same type for both fields in the destination to avoid performance issues.
| Type | Source data type | Value range | AnalyticDB for MySQL | AnalyticDB for PostgreSQL |
|---|---|---|---|---|
| Integer | BIT[(M)] | 1 to 64 | VARCHAR | BIT[(M)] |
| Integer | TINYINT[(M)] | -128 to 127 | TINYINT | SMALLINT |
| Integer | TINYINT[(M)] [UNSIGNED] | 0 to 255 | SMALLINT | SMALLINT |
| Integer | SMALLINT[(M)] | -32768 to 32767 | SMALLINT | SMALLINT |
| Integer | SMALLINT[(M)] [UNSIGNED] | 0 to 65535 | INT | INTEGER |
| Integer | MEDIUMINT[(M)] | -8388608 to 8388607 | INT | INTEGER |
| Integer | MEDIUMINT[(M)] [UNSIGNED] | 0 to 16777215 | INT | INTEGER |
| Integer | INT[(M)] | -2147483648 to 2147483647 | INT | INTEGER |
| Integer | INT[(M)] [UNSIGNED] | 0 to 4294967295 | BIGINT | BIGINT |
| Integer | BIGINT[(M)] | -9223372036854775808 to 9223372036854775807 | BIGINT | BIGINT |
| Integer | BIGINT[(M)] [UNSIGNED] | 0 to 18446744073709551615 | DECIMAL(20,0) | NUMERIC(20) |
| Decimal | DECIMAL[(M[,D])] | M: 0 to 65; D: 0 to 30 | DECIMAL[(M[,D])] | DECIMAL[(M[,D])] |
| Decimal | FLOAT(p) | 1.175494351E-38 to 3.402823466E+38 | FLOAT | REAL |
| Decimal | DOUBLE[(M,D)] | 2.2250738585072014E-308 to 1.7976931348623157E+308 | DOUBLE | DOUBLE PRECISION |
| Date/time | DATE | 1000-01-01 to 9999-12-31 (YYYY-MM-DD) | DATE | DATE |
| Date/time | DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 to 9999-12-31 23:59:59.999999 (UTC) | DATETIME | TIMESTAMP |
| Date/time | TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999 (UTC) | TIMESTAMP | TIMESTAMP WITH TIME ZONE |
| Date/time | TIME[(fsp)] | -838:59:59.000000 to 838:59:59.000000 (hh:mm:ss[.fraction], UTC) | TIME | TIMESTAMP WITH TIME ZONE |
| Date/time | YEAR[(4)] | 1901 to 2155, or 0000 | INT | INTEGER |
| String | CHAR[(M)] | 0 to 255 characters | VARCHAR | CHAR |
| String | VARCHAR(M) | 0 to 65,535 characters | VARCHAR | VARCHAR |
| String | BINARY[(M)] | 0 to 255 bytes | VARBINARY | BYTEA |
| String | VARBINARY(M) | 0 to 65,535 bytes | VARBINARY | BYTEA |
| String | TINYBLOB | 255 (2^8 - 1) bytes | VARBINARY | BYTEA |
| String | TINYTEXT | 255 (2^8 - 1) characters | VARCHAR | TEXT |
| String | BLOB | 65,535 (2^16 - 1) bytes | VARBINARY | BYTEA |
| String | TEXT | 65,535 (2^16 - 1) characters | VARCHAR | TEXT |
| String | MEDIUMBLOB | 16,777,215 (2^24 - 1) bytes | VARBINARY | BYTEA |
| String | MEDIUMTEXT | 16,777,215 (2^24 - 1) characters | VARCHAR | TEXT |
| String | LONGBLOB | 4,294,967,295 (2^32 - 1) bytes | VARBINARY | BYTEA |
| String | LONGTEXT | 4,294,967,295 (2^32 - 1) characters | VARCHAR | TEXT |
| String | ENUM('value1','value2',...) | Up to 65,535 enumeration values | VARCHAR | VARCHAR(128) |
| String | SET('value1','value2',...) | Up to 64 elements | VARCHAR | VARCHAR(128) |
| Spatial | GEOMETRY | Any geometry type | VARBINARY | POLYGON |
| Spatial | POINT | — | VARBINARY | POINT |
| Spatial | LINESTRING | — | VARBINARY | PATH |
| Spatial | POLYGON | — | VARBINARY | POLYGON |
| Spatial | MULTIPOINT | — | VARBINARY | POLYGON |
| Spatial | MULTILINESTRING | — | VARBINARY | PATH |
| Spatial | MULTIPOLYGON | — | VARBINARY | POLYGON |
| Spatial | GEOMETRYCOLLECTION | Any geometry type collection | VARBINARY | POLYGON |
| JSON | JSON | — | JSON | JSON |
DataHub and Kafka
Kafka (Message Queue for Apache Kafka or self-managed Kafka) preserves the source data type from MySQL or PolarDB for MySQL without conversion.
| Type | Source data type | Value range | DataHub | Kafka |
|---|---|---|---|---|
| Integer | BIT[(M)] | 1 to 64 | BOOLEAN | STRING | Same as MySQL |
| Integer | TINYINT[(M)] | -128 to 127 | BIGINT | Same as MySQL |
| Integer | TINYINT[(M)] [UNSIGNED] | 0 to 255 | BIGINT | Same as MySQL |
| Integer | SMALLINT[(M)] | -32768 to 32767 | BIGINT | Same as MySQL |
| Integer | SMALLINT[(M)] [UNSIGNED] | 0 to 65535 | BIGINT | Same as MySQL |
| Integer | MEDIUMINT[(M)] | -8388608 to 8388607 | BIGINT | Same as MySQL |
| Integer | MEDIUMINT[(M)] [UNSIGNED] | 0 to 16777215 | BIGINT | Same as MySQL |
| Integer | INT[(M)] | -2147483648 to 2147483647 | BIGINT | Same as MySQL |
| Integer | INT[(M)] [UNSIGNED] | 0 to 4294967295 | BIGINT | Same as MySQL |
| Integer | BIGINT[(M)] | -9223372036854775808 to 9223372036854775807 | BIGINT | Same as MySQL |
| Integer | BIGINT[(M)] [UNSIGNED] | 0 to 18446744073709551615 | BIGINT | Same as MySQL |
| Decimal | DECIMAL[(M[,D])] | M: 0 to 65; D: 0 to 30 | DECIMAL | Same as MySQL |
| Decimal | FLOAT(p) | 1.175494351E-38 to 3.402823466E+38 | DOUBLE | Same as MySQL |
| Decimal | DOUBLE[(M,D)] | 2.2250738585072014E-308 to 1.7976931348623157E+308 | DOUBLE | Same as MySQL |
| Date/time | DATE | 1000-01-01 to 9999-12-31 | TIMESTAMP | Same as MySQL |
| Date/time | DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 to 9999-12-31 23:59:59.999999 | TIMESTAMP | Same as MySQL |
| Date/time | TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999 | TIMESTAMP | Same as MySQL |
| Date/time | TIME[(fsp)] | -838:59:59.000000 to 838:59:59.000000 | STRING | Same as MySQL |
| Date/time | YEAR[(4)] | 1901 to 2155, or 0000 | STRING | Same as MySQL |
| String | CHAR[(M)] | 0 to 255 characters | STRING | Same as MySQL |
| String | VARCHAR(M) | 0 to 65,535 characters | STRING | Same as MySQL |
| String | BINARY[(M)] | 0 to 255 bytes | STRING | Same as MySQL |
| String | VARBINARY(M) | 0 to 65,535 bytes | STRING | Same as MySQL |
| String | TINYBLOB | 255 (2^8 - 1) bytes | STRING | Same as MySQL |
| String | TINYTEXT | 255 (2^8 - 1) characters | STRING | Same as MySQL |
| String | BLOB | 65,535 (2^16 - 1) bytes | STRING | Same as MySQL |
| String | TEXT | 65,535 (2^16 - 1) characters | STRING | Same as MySQL |
| String | MEDIUMBLOB | 16,777,215 (2^24 - 1) bytes | STRING | Same as MySQL |
| String | MEDIUMTEXT | 16,777,215 (2^24 - 1) characters | STRING | Same as MySQL |
| String | LONGBLOB | 4,294,967,295 (2^32 - 1) bytes | STRING | Same as MySQL |
| String | LONGTEXT | 4,294,967,295 (2^32 - 1) characters | STRING | Same as MySQL |
| String | ENUM('value1','value2',...) | Up to 65,535 elements | STRING | Same as MySQL |
| String | SET('value1','value2',...) | Up to 64 elements | STRING | Same as MySQL |
| Spatial | GEOMETRY | Any geometry type | STRING | Same as MySQL |
| Spatial | POINT | — | STRING | Same as MySQL |
| Spatial | LINESTRING | — | STRING | Same as MySQL |
| Spatial | POLYGON | — | STRING | Same as MySQL |
| Spatial | MULTIPOINT | — | STRING | Same as MySQL |
| Spatial | MULTILINESTRING | — | STRING | Same as MySQL |
| Spatial | MULTIPOLYGON | — | STRING | Same as MySQL |
| Spatial | GEOMETRYCOLLECTION | Any geometry type collection | STRING | Same as MySQL |
| JSON | JSON | — | STRING | Same as MySQL |
MaxCompute, Elasticsearch, and ClickHouse
Elasticsearch-specific behavior:
BIT: Use BOOLEAN when the value is a single byte; otherwise use LONG.
DECIMAL: Use TEXT instead of DOUBLE when the value contains a decimal point, to preserve data consistency.
DATE format: YYYY-MM-DD. DATETIME and TIMESTAMP format: yyyy-MM-dd'T'HH:mm:ss (UTC); microsecond precision: yyyy-MM-dd'T'HH:mm:ss.S. YEAR format: yyyy. See Elasticsearch date format. ClickHouse-specific behavior:
DATE: The supported range in ClickHouse is smaller than in MySQL. Using DATE may cause write failures.
DATETIME: The same range limitation applies.
TIMESTAMP: Time zone information is not preserved.
| Type | Source data type | Value range | MaxCompute | Elasticsearch | ClickHouse |
|---|---|---|---|---|---|
| Integer | BIT[(M)] | 1 to 64 | BOOLEAN | STRING | BOOLEAN | LONG | UInt8 |
| Integer | TINYINT[(M)] | -128 to 127 | BIGINT | SHORT | Int8 |
| Integer | TINYINT[(M)] [UNSIGNED] | 0 to 255 | BIGINT | INTEGER | UInt8 |
| Integer | SMALLINT[(M)] | -32768 to 32767 | BIGINT | SHORT | Int16 |
| Integer | SMALLINT[(M)] [UNSIGNED] | 0 to 65535 | BIGINT | INTEGER | UInt16 |
| Integer | MEDIUMINT[(M)] | -8388608 to 8388607 | BIGINT | INTEGER | Int32 |
| Integer | MEDIUMINT[(M)] [UNSIGNED] | 0 to 16777215 | BIGINT | INTEGER | Int32 |
| Integer | INT[(M)] | -2147483648 to 2147483647 | BIGINT | INTEGER | Int32 |
| Integer | INT[(M)] [UNSIGNED] | 0 to 4294967295 | BIGINT | LONG | UInt32 |
| Integer | BIGINT[(M)] | -9223372036854775808 to 9223372036854775807 | BIGINT | LONG | Int64 |
| Integer | BIGINT[(M)] [UNSIGNED] | 0 to 18446744073709551615 | BIGINT | LONG | UInt64 |
| Decimal | DECIMAL[(M[,D])] | M: 0 to 65; D: 0 to 30 | DOUBLE | DOUBLE | DECIMAL |
| Decimal | FLOAT(p) | 1.175494351E-38 to 3.402823466E+38 | DOUBLE | FLOAT | Float32 |
| Decimal | DOUBLE[(M,D)] | 2.2250738585072014E-308 to 1.7976931348623157E+308 | DOUBLE | DOUBLE | Float64 |
| Date/time | DATE | 1000-01-01 to 9999-12-31 | DATETIME | DATE | DATE32 |
| Date/time | DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 to 9999-12-31 23:59:59.999999 | DATETIME | DATE | DATETIME64 |
| Date/time | TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999 | DATETIME | DATE | DATETIME |
| Date/time | TIME[(fsp)] | -838:59:59.000000 to 838:59:59.000000 | STRING | DATE | STRING |
| Date/time | YEAR[(4)] | 1901 to 2155, or 0000 | STRING | DATE | Int16 |
| String | CHAR[(M)] | 0 to 255 characters | STRING | KEYWORD | STRING |
| String | VARCHAR(M) | ≤255 characters | STRING | KEYWORD | STRING |
| String | VARCHAR(M) | >255 characters | STRING | TEXT | STRING |
| String | BINARY[(M)] | 0 to 255 bytes | STRING | BINARY | STRING |
| String | VARBINARY(M) | 0 to 65,535 bytes | STRING | BINARY | STRING |
| String | TINYBLOB | 255 (2^8 - 1) bytes | STRING | BINARY | STRING |
| String | TINYTEXT | 255 (2^8 - 1) characters | STRING | TEXT | STRING |
| String | BLOB | 65,535 (2^16 - 1) bytes | STRING | BINARY | STRING |
| String | TEXT | 65,535 (2^16 - 1) characters | STRING | TEXT | STRING |
| String | MEDIUMBLOB | 16,777,215 (2^24 - 1) bytes | STRING | BINARY | STRING |
| String | MEDIUMTEXT | 16,777,215 (2^24 - 1) characters | STRING | TEXT | STRING |
| String | LONGBLOB | 4,294,967,295 (2^32 - 1) bytes | STRING | BINARY | STRING |
| String | LONGTEXT | 4,294,967,295 (2^32 - 1) characters | STRING | TEXT | STRING |
| String | ENUM('value1','value2',...) | Up to 65,535 enumeration values | STRING | KEYWORD | ENUM |
| String | SET('value1','value2',...) | Up to 64 elements | STRING | KEYWORD | STRING |
| Spatial | GEOMETRY | Any geometry type | STRING | GEO_SHAPE | STRING |
| Spatial | POINT | — | STRING | GEO_POINT | STRING |
| Spatial | LINESTRING | — | STRING | GEO_SHAPE | STRING |
| Spatial | POLYGON | — | STRING | GEO_SHAPE | STRING |
| Spatial | MULTIPOINT | — | STRING | GEO_SHAPE | STRING |
| Spatial | MULTILINESTRING | — | STRING | GEO_SHAPE | STRING |
| Spatial | MULTIPOLYGON | — | STRING | GEO_SHAPE | STRING |
| Spatial | GEOMETRYCOLLECTION | Any geometry type collection | STRING | GEO_SHAPE | STRING |
| JSON | JSON | — | STRING | OBJECT | STRING |
Tablestore
| Source data type | Tablestore data type |
|---|---|
| INTEGER | INTEGER |
| INT | INTEGER |
| SMALLINT | INTEGER |
| TINYINT | INTEGER |
| MEDIUMINT | INTEGER |
| BIGINT | INTEGER |
| DECIMAL | DOUBLE |
| NUMERIC | DOUBLE |
| FLOAT | DOUBLE |
| DOUBLE | DOUBLE |
| BIT | BOOLEAN |
| DATE / TIMESTAMP / DATETIME / TIME / YEAR | STRING or INTEGER (default: STRING) |
| CHAR | STRING |
| VARCHAR | STRING |
| BINARY | BINARY |
| VARBINARY | BINARY |
| TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB | BINARY |
| TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT | STRING |
| ENUM | STRING |
| SET | STRING |
| GEOMETRY / POINT / LINESTRING / POLYGON / MULTIPOINT / MULTILINESTRING / MULTIPOLYGON / GEOMETRYCOLLECTION | STRING |
| JSON | STRING |
Lindorm
Lindorm-specific behavior:
BIGINT UNSIGNED: Only values within the BIGINT range (-9223372036854775808 to 9223372036854775807) are supported.
DECIMAL: The precision must match the corresponding field in the source instance.
DATE: Mapped to DATE on Lindorm 2.8.0.2 or later; mapped to VARCHAR on earlier versions.
DATETIME: Map to VARCHAR. Mapping to TIMESTAMP may cause data inconsistency due to time zone differences. Use the extract, transform, and load (ETL) feature during task configuration to ensure data consistency.
TIME: Mapped to TIME on Lindorm 2.8.0.2 or later (format: hh:mm:ss; excess precision is truncated — for example, 08:11:15.354 becomes 08:11:15); mapped to VARCHAR on earlier versions.
| Source data type | Lindorm data type |
|---|---|
| BOOLEAN | BOOLEAN |
| BIT | BOOLEAN |
| TINYINT | TINYINT |
| SMALLINT | SMALLINT |
| INTEGER | INTEGER |
| BIGINT | BIGINT |
| BIGINT UNSIGNED | BIGINT |
| FLOAT | FLOAT |
| DOUBLE | DOUBLE |
| DECIMAL | DECIMAL |
| CHAR / VARCHAR / TEXT / TINYTEXT / MEDIUMTEXT / LONGTEXT | CHAR / VARCHAR |
| BINARY | BINARY |
| BLOB | VARBINARY |
| VARBINARY | VARBINARY |
| TIMESTAMP | TIMESTAMP |
| YEAR | INTEGER |
| DATE | DATE (Lindorm 2.8.0.2 or later) / VARCHAR (earlier versions) |
| DATETIME | VARCHAR |
| TIME | TIME (Lindorm 2.8.0.2 or later) / VARCHAR (earlier versions) |
| JSON | JSON |
Oracle
MySQL-to-Oracle conversion behavior:
DECIMAL: If precision and scale are not specified, the type is converted to NUMBER.
DATETIME: If precision is not specified, the type is converted to TIMESTAMP(0).
TIMESTAMP: If precision is not specified, the type is converted to TIMESTAMP(0) WITH LOCAL TIME ZONE.
CHAR: If length is not specified, the type is converted to CHAR(1).
BINARY: If length is not specified, the type is converted to RAW(1).
ENUM, SET, and all spatial types are not supported. To exclude unsupported columns, use column filtering when configuring the task.
| Type | Source data type | Value range | Oracle data type |
|---|---|---|---|
| Integer | BIT[(M)] | 1 to 64 | NUMBER(2,0) |
| Integer | TINYINT[(M)] | -128 to 127 | NUMBER(3,0) |
| Integer | TINYINT[(M)] [UNSIGNED] | 0 to 255 | NUMBER(3,0) |
| Integer | SMALLINT[(M)] | -32768 to 32767 | NUMBER(5,0) |
| Integer | SMALLINT[(M)] [UNSIGNED] | 0 to 65535 | NUMBER(5,0) |
| Integer | MEDIUMINT[(M)] | -8388608 to 8388607 | NUMBER(7,0) |
| Integer | MEDIUMINT[(M)] [UNSIGNED] | 0 to 16777215 | NUMBER(7,0) |
| Integer | INT[(M)] | -2147483648 to 2147483647 | INT |
| Integer | INT[(M)] [UNSIGNED] | 0 to 4294967295 | NUMBER(10,0) |
| Integer | BIGINT[(M)] | -9223372036854775808 to 9223372036854775807 | NUMBER(20,0) |
| Integer | BIGINT[(M)] [UNSIGNED] | 0 to 18446744073709551615 | NUMBER(20,0) |
| Decimal | DECIMAL[(M[,D])] | M: 0 to 65; D: 0 to 30 | NUMBER(M,D) |
| Decimal | FLOAT(p) | 1.175494351E-38 to 3.402823466E+38 | FLOAT |
| Decimal | DOUBLE[(M,D)] | 2.2250738585072014E-308 to 1.7976931348623157E+308 | DOUBLE |
| Date/time | DATE | 1000-01-01 to 9999-12-31 | DATE |
| Date/time | DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 to 9999-12-31 23:59:59.999999 | TIMESTAMP[(fsp)] |
| Date/time | TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999 | TIMESTAMP[(fsp)] WITH LOCAL TIME ZONE |
| Date/time | TIME[(fsp)] | -838:59:59.000000 to 838:59:59.000000 | Not supported |
| Date/time | YEAR[(4)] | 1901 to 2155, or 0000 | INT |
| String | CHAR[(M)] | 0 to 255 characters | CHAR[(M)] |
| String | VARCHAR(M) | 0 to 65,535 characters | VARCHAR(M) |
| String | BINARY[(M)] | 0 to 255 bytes | RAW(M) |
| String | VARBINARY(M) | 0 to 65,535 bytes | RAW(M) |
| String | TINYBLOB | 255 (2^8 - 1) bytes | BLOB |
| String | TINYTEXT | 255 (2^8 - 1) characters | TEXT |
| String | BLOB | 65,535 (2^16 - 1) bytes | BLOB |
| String | TEXT | 65,535 (2^16 - 1) characters | TEXT |
| String | MEDIUMBLOB | 16,777,215 (2^24 - 1) bytes | BLOB |
| String | MEDIUMTEXT | 16,777,215 (2^24 - 1) characters | TEXT |
| String | LONGBLOB | 4,294,967,295 (2^32 - 1) bytes | BLOB |
| String | LONGTEXT | 4,294,967,295 (2^32 - 1) characters | TEXT |
| String | ENUM('value1','value2',...) | Up to 65,535 enumeration values | Not supported |
| String | SET('value1','value2',...) | Up to 64 elements | Not supported |
| Spatial | GEOMETRY | Any geometry type | Not supported |
| Spatial | POINT | — | Not supported |
| Spatial | LINESTRING | — | Not supported |
| Spatial | POLYGON | — | Not supported |
| Spatial | MULTIPOINT | — | Not supported |
| Spatial | MULTILINESTRING | — | Not supported |
| Spatial | MULTIPOLYGON | — | Not supported |
| Spatial | GEOMETRYCOLLECTION | Any geometry type collection | Not supported |
| JSON | JSON | — | CLOB |
Destination instance: AnalyticDB for MySQL or AnalyticDB for PostgreSQL
When you synchronize data to AnalyticDB for MySQL, note the following:
DTS converts an
INTfield with theAUTO_INCREMENTattribute in the source database to theBIGINTtype in the destination database.To avoid a performance impact, if a table used in a
JOINoperation contains bothINTandBIGINTfields, ensure that both fields use the same data type (INTorBIGINT) in the destination database.
Type | Source data type | Value range | Data type in AnalyticDB for MySQL | Data type in AnalyticDB for PostgreSQL |
Integer | BIT[(M)] | 1 to 64 | VARCHAR | BIT[(M)] |
TINYINT[(M)] | -128 to 127 | TINYINT | SMALLINT | |
TINYINT[(M)] [UNSIGNED] | 0 to 255 | SMALLINT | SMALLINT | |
SMALLINT[(M)] | -32768 to 32767 | SMALLINT | SMALLINT | |
SMALLINT[(M)] [UNSIGNED] | 0 to 65535 | INT | INTEGER | |
MEDIUMINT[(M)] | -8388608 to 8388607 | INT | INTEGER | |
MEDIUMINT[(M)] [UNSIGNED] | 0 to 16777215 | INT | INTEGER | |
INT[(M)] | -2147483648 to 2147483647 | INT | INTEGER | |
INT[(M)] [UNSIGNED] | 0 to 4294967295 | BIGINT | BIGINT | |
BIGINT[(M)] | -9223372036854775808 to 9223372036854775807 | BIGINT | BIGINT | |
BIGINT[(M)] [UNSIGNED] | 0 to 18446744073709551615 | DECIMAL(20,0) | NUMERIC(20) | |
Decimal | DECIMAL[(M[,D])] | M: 0 to 65 D: 0 to 30 | DECIMAL[(M[,D])] | DECIMAL[(M[,D])] |
FLOAT(p) | 1.175494351E-38 to 3.402823466E+38 | FLOAT | REAL | |
DOUBLE[(M,D)] | 2.2250738585072014E-308 to 1.7976931348623157E+308 | DOUBLE | DOUBLE PRECISION | |
Time Type | DATE | 1000-01-01 to 9999-12-31 Note Format: YYYY-MM-DD. | DATE | DATE |
DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 to 9999-12-31 23:59:59.999999 Note Format: YYYY-MM-DD hh:mm:ss[.fraction] (UTC). | DATETIME | TIMESTAMP | |
TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999 Note Format: YYYY-MM-DD hh:mm:ss[.fraction] (UTC). | TIMESTAMP | TIMESTAMP WITH TIME ZONE | |
TIME[(fsp)] | -838:59:59.000000 to 838:59:59.000000 Note Format: hh:mm:ss[.fraction] (UTC). | TIME | TIMESTAMP WITH TIME ZONE | |
YEAR[(4)] | 1901 to 2155, or 0000 | INT | INTEGER | |
String | CHAR[(M)] | 0 to 255 characters | VARCHAR | CHAR |
VARCHAR(M) | 0 to 65,535 characters | VARCHAR | VARCHAR | |
BINARY[(M)] | 0 to 255 bytes | VARBINARY | BYTEA | |
VARBINARY(M) | 0 to 65,535 bytes | VARBINARY | BYTEA | |
TINYBLOB | 255 (2^8 - 1) bytes | VARBINARY | BYTEA | |
TINYTEXT | 255 (2^8 - 1) characters | VARCHAR | TEXT | |
BLOB | 65,535 (2^16 - 1) bytes | VARBINARY | BYTEA | |
TEXT | 65,535 (2^16 - 1) characters | VARCHAR | TEXT | |
MEDIUMBLOB | 16,777,215 (2^24 - 1) bytes | VARBINARY | BYTEA | |
MEDIUMTEXT | 16,777,215 (2^24 - 1) characters | VARCHAR | TEXT | |
LONGBLOB | 4,294,967,295 or 4 GB (2^32 - 1) bytes | VARBINARY | BYTEA | |
LONGTEXT | 4,294,967,295 or 4 GB (2^32 - 1) characters | VARCHAR | TEXT | |
ENUM('value1','value2',...) | A maximum of 65,535 enumeration values. | VARCHAR | VARCHAR(128) | |
SET('value1','value2',...) | A maximum of 64 elements. | VARCHAR | VARCHAR(128) | |
Space types | GEOMETRY | A value of any geometry type. | VARBINARY | POLYGON |
POINT | None | VARBINARY | POINT | |
LINESTRING | None | VARBINARY | PATH | |
POLYGON | None | VARBINARY | POLYGON | |
MULTIPOINT | None | VARBINARY | POLYGON | |
MULTILINESTRING | None | VARBINARY | PATH | |
MULTIPOLYGON | None | VARBINARY | POLYGON | |
GEOMETRYCOLLECTION | A collection of values of any geometry type. | VARBINARY | POLYGON | |
JSON data type | JSON | None | JSON | JSON |
Data synchronization from an Oracle source
When the source is a self-managed Oracle database, DTS maps data types to MySQL, PolarDB for MySQL, PolarDB-X, or AnalyticDB for PostgreSQL as shown below.
DTS converts unsupported field types to BYTEA in AnalyticDB for PostgreSQL. If the conversion fails, DTS sets the field value to NULL.
| Type | Oracle data type | Value range | MySQL / PolarDB for MySQL / PolarDB-X | AnalyticDB for PostgreSQL |
|---|---|---|---|---|
| Numeric | NUMBER(p,s) | 1–22 bytes; p: 1–38; s: -84 to 127 | DECIMAL[(p[,s])] (unspecified: DECIMAL(65,30)) | DECIMAL | TINYINT | SMALLINT | INTEGER | BIGINT |
| Numeric | FLOAT(p) | 1–22 bytes; p: 1–126 bits | DOUBLE | DOUBLE PRECISION |
| Numeric | BINARY_FLOAT | 32-bit float (4 bytes) | FLOAT | DOUBLE PRECISION |
| Numeric | BINARY_DOUBLE | 64-bit float (8 bytes) | DOUBLE | DOUBLE PRECISION |
| Date/time | DATE | — | DATETIME | TIMESTAMP(0) |
| Date/time | TIMESTAMP[(fsp)] | — | DATETIME[(fsp)] | TIMESTAMP |
| Date/time | TIMESTAMP[(fsp)] WITH TIME ZONE | — | DATETIME[(fsp)] | TIMESTAMP WITH TIME ZONE |
| Date/time | TIMESTAMP[(fsp)] WITH LOCAL TIME ZONE | — | DATETIME[(fsp)] | TIMESTAMP WITH TIME ZONE |
| Date/time | INTERVAL YEAR[(y)] TO MONTH | — | Not supported | VARCHAR(32) |
| Date/time | INTERVAL DAY[(d)] TO SECOND[(fsp)] | — | Not supported | VARCHAR(32) |
| String | CHAR[(size [BYTE|CHAR])] | 2,000 bytes | CHAR[(n)] (unspecified: CHAR(1)) | CHAR |
| String | NCHAR[(size)] | 2,000 bytes | NATIONAL CHAR[(n)] (unspecified: NATIONAL CHAR(1)) | VARCHAR |
| String | VARCHAR(size [BYTE|CHAR]) | EXTENDED: 32,767 bytes; STANDARD: 4,000 bytes | VARCHAR(n) | VARCHAR(n) |
| String | VARCHAR2(size [BYTE|CHAR]) | EXTENDED: 32,767 bytes; STANDARD: 4,000 bytes | VARCHAR(n) | VARCHAR |
| String | NVARCHAR2(size) | EXTENDED: 32,767 bytes; STANDARD: 4,000 bytes | NATIONALVARCHAR[(n)] | VARCHAR |
| String | LONG | Max 2 GB (2^31 - 1) | LONGTEXT | TEXT |
| String | RAW(size) | Max 32,767 bytes or 2,000 bytes | BINARY(2*size) | BYTEA |
| String | LONG RAW | Max 2 GB | LONGBLOB | BYTEA |
| String | CLOB | Max (4 GB - 1) × DB_BLOCK_SIZE | LONGTEXT | TEXT |
| String | NCLOB | Max (4 GB - 1) × DB_BLOCK_SIZE | LONGTEXT | TEXT |
| String | BLOB | Max (4 GB - 1) × DB_BLOCK_SIZE | LONGBLOB | BYTEA |
| String | BFILE | 4 GB | Not supported | Not supported |
| JSON | JSON | Max 32 MB | Not supported | JSON |
| Row ID | ROWID | 64 characters | Not supported | OID |
| Row ID | UROWID | 64 characters | Not supported | Not supported |
| Spatial | Custom types | — | Not supported | Not supported |
Data synchronization from a PostgreSQL source
When the source is a self-managed PostgreSQL database or an RDS for PostgreSQL instance, DTS maps data types to AnalyticDB for PostgreSQL as shown below.
If the destination is ClickHouse, BOOLEAN is converted to STRING.
| Type | PostgreSQL data type | Value range | AnalyticDB for PostgreSQL |
|---|---|---|---|
| Integer | SMALLINT | -32768 to +32767 | SMALLINT |
| Integer | INTEGER | -2147483648 to +2147483647 | INTEGER |
| Integer | BIGINT | -9223372036854775808 to +9223372036854775807 | BIGINT |
| Decimal | DECIMAL | Up to 131,072 digits before the decimal point; 16,383 after | DECIMAL |
| Decimal | NUMERIC | Up to 131,072 digits before the decimal point; 16,383 after | NUMERIC |
| Decimal | REAL | 6 decimal digits of precision | REAL |
| Decimal | DOUBLE PRECISION | 15 decimal digits of precision | DOUBLE PRECISION |
| Currency | MONEY | -92233720368547758.08 to +92233720368547758.07 | MONEY |
| String | CHARACTER VARYING(n) | — | CHARACTER VARYING(n) |
| String | CHARACTER(n) | — | CHARACTER(n) |
| String | TEXT | — | TEXT |
| String | CHAR | Default: 1 byte | CHAR |
| String | NAME | Max 64 bytes | NAME |
| Text search | TSQUERY | Text search query | TEXT |
| Text search | TSVECTOR | Text search document | TEXT |
| Binary | BYTEA | 1 or 4 bytes + binary string | BYTEA |
| Date/time | TIMESTAMP[(p)] [WITHOUT TIME ZONE] | 8 bytes | TIMESTAMP[(p)] [WITHOUT TIME ZONE] |
| Date/time | TIMESTAMP[(p)] WITH TIME ZONE | 8 bytes | TIMESTAMP[(p)] WITH TIME ZONE |
| Date/time | DATE | 4 bytes | DATE |
| Date/time | TIME[(p)] [WITHOUT TIME ZONE] | 8 bytes | TIME[(p)] [WITHOUT TIME ZONE] |
| Date/time | TIME[(p)] WITH TIME ZONE | 12 bytes | TIME[(p)] WITH TIME ZONE |
| Date/time | interval [fields] [(p)] | 16 bytes | interval [fields] [(p)] |
| Boolean | BOOLEAN | 1 byte | BOOLEAN |
| Enum | Custom enumeration | — | VARCHAR(128) |
| Spatial | POINT | 16 bytes | POINT |
| Spatial | LINE | 32 bytes | LINE |
| Spatial | LSEG | 32 bytes | LSEG |
| Spatial | BOX | 32 bytes | BOX |
| Spatial | PATH | 16 + 16n bytes | PATH |
| Spatial | POLYGON | 40 + 16n bytes | POLYGON |
| Spatial | CIRCLE | 24 bytes | CIRCLE |
| Network | CIDR | IPv4 and IPv6 networks (7 or 19 bytes) | CIDR |
| Network | INET | IPv4 and IPv6 hosts and networks (7 or 19 bytes) | INET |
| Network | MACADDR | MAC address (6 bytes) | MACADDR |
| Network | MACADDR8 | MAC address in EUI-64 format (8 bytes) | MACADDR8 |
| Bit string | BIT(n) | — | BIT(n) |
| Bit string | BIT VARYING(n) | — | BIT VARYING(n) |
| UUID | UUID | — | VARCHAR(64) |
| XML | XML | — | XML |
| JSON | JSON | — | JSON |
| JSON | JSONB | — | JSONB |
Data synchronization from an SQL Server source
When the source is a self-managed SQL Server database or an RDS for SQL Server instance, DTS maps data types to AnalyticDB for MySQL, PostgreSQL or AnalyticDB for PostgreSQL, and MySQL or PolarDB for MySQL as shown below.
| Type | SQL Server data type | Value range | AnalyticDB for MySQL | PostgreSQL / AnalyticDB for PostgreSQL | MySQL / PolarDB for MySQL |
|---|---|---|---|---|---|
| Integer | BIT | 1, 0, or NULL | BOOLEAN | BIT(1) | BIT(1) |
| Integer | TINYINT | 0 to 255 | TINYINT | SMALLINT | TINYINT UNSIGNED |
| Integer | SMALLINT | -32,768 to 32,767 | SMALLINT | SMALLINT | SMALLINT |
| Integer | INT | -2,147,483,648 to 2,147,483,647 | INTEGER | INTEGER | INT |
| Integer | BIGINT | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | BIGINT | BIGINT | BIGINT |
| Decimal | NUMERIC[(p,s)] | -10^38+1 to 10^38-1; 1 ≤ p ≤ 38 | DECIMAL | DECIMAL | DECIMAL[(p,s)] |
| Decimal | DECIMAL[(p,s)] | -10^38+1 to 10^38-1; 1 ≤ p ≤ 38 | DECIMAL | DECIMAL | DECIMAL[(p,s)] |
| Decimal | FLOAT | -1.79E+308 to -2.23E-308, 0, and 2.23E-308 to 1.79E+308 | DOUBLE | DOUBLE PRECISION | DOUBLE |
| Decimal | REAL | -3.40E+38 to -1.18E-38, 0, and 1.18E-38 to 3.40E+38 | FLOAT | REAL | DOUBLE |
| Currency | MONEY | -922,337,203,685,477.5808 to 922,337,203,685,477.5807 | DECIMAL(19,4) | DECIMAL(19,4) | DECIMAL(19,4) |
| Currency | SMALLMONEY | -214,748.3648 to 214,748.3647 | DECIMAL(10,4) | DECIMAL(10,4) | DECIMAL(10,4) |
| Date/time | DATE | 0001-01-01 to 9999-12-31 | DATE | DATE | DATE |
| Date/time | DATETIME | Jan 1, 1753 to Dec 31, 9999; 00:00:00 to 23:59:59.997 | DATETIME | TIMESTAMP(3) WITHOUT TIME ZONE | DATETIME(3) |
| Date/time | DATETIME2[(p)] | 0001-01-01 to 9999-12-31; 00:00:00 to 23:59:59.9999999 | DATETIME | TIMESTAMP(7) WITHOUT TIME ZONE | DATETIME(p) (default: p=6) |
| Date/time | DATETIMEOFFSET[(p)] | 0001-01-01 to 9999-12-31; time zone offset: -14:00 to +14:00 | TIMESTAMP | TIMESTAMP(7) WITH TIME ZONE | DATETIME(p) (default: p=6) |
| Date/time | SMALLDATETIME | Seconds always :00; no fractional seconds | DATETIME | TIMESTAMP WITHOUT TIME ZONE | DATETIME |
| Date/time | TIME[(p)] | 00:00:00.0000000 to 23:59:59.9999999 | TIME | TIME(7) WITH TIME ZONE | TIME(p) |
| Date/time | TIMESTAMP[(fsp)] | 1970-01-01 00:00:01 to 2038-01-19 03:14:07.999999 | VARBINARY(8) | BYTEA | VARBINARY(8) |
| String | BINARY[(n)] | n: 1–8,000 | VARBINARY | BYTEA | >255: BLOB; otherwise: BINARY(n) |
| String | VARBINARY[(n|max)] | n: 1–8,000; max: up to 2^31-1 bytes | VARBINARY | BYTEA | max: LONGBLOB; otherwise: VARBINARY(n) |
| String | CHAR[(n)] | n: 1–8,000 bytes | VARCHAR | CHARACTER | >255: VARCHAR; otherwise: CHAR |
| String | VARCHAR[(n|max)] | n: 1–8,000; max: up to 2^31-1 bytes (2 GB) | VARCHAR | CHARACTER | max: LONGTEXT; otherwise: VARCHAR(n) |
| String | NCHAR[(n)] | n: 1–4,000 (2n bytes) | VARCHAR | CHARACTER VARYING | VARCHAR(200) |
| String | NVARCHAR[(n|max)] | n: 1–4,000; max: up to 2^30-1 characters (2 GB) | VARCHAR | CHARACTER VARYING | max: LONGTEXT; otherwise: VARCHAR(n) |
| String | NTEXT | Max 2^30-1 bytes | VARCHAR | TEXT | LONGTEXT |
| String | TEXT | Max 2^31-1 bytes | VARCHAR | TEXT | LONGTEXT |
| String | IMAGE | 0 to 2^31-1 bytes | VARBINARY | BYTEA | LONGBLOB |
| Spatial | GEOGRAPHY | — | VARCHAR | Not supported | BLOB |
| Spatial | GEOMETRY | — | VARCHAR | Not supported | BLOB |
| XML | XML | — | VARCHAR | XML | LONGTEXT |
| Other | UNIQUEIDENTIFIER | — | VARCHAR | CHARACTER(36) | CHAR(36) |
| Other | SQL_VARIANT | — | Not supported | Not supported | VARCHAR(200) |
| Other | HIERARCHYID | — | Not supported | Not supported | VARCHAR(200) |
| Other | SYSNAME | — | VARCHAR | CHARACTER VARYING(128) | VARCHAR(200) |
Data synchronization from a Db2 for LUW source
When the source is a Db2 for LUW database, DTS maps data types to MySQL as shown below.
| Type | Db2 for LUW data type | Value range | MySQL data type |
|---|---|---|---|
| Integer | SMALLINT | -32,768 to +32,767 | SMALLINT |
| Integer | INTEGER | -2,147,483,648 to +2,147,483,647 | INT |
| Integer | BIGINT | -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 | BIGINT |
| Decimal | DECIMAL(p,s) | p ≤ 38 | DECIMAL |
| Decimal | FLOAT(n) | 1–53; 1–24: single precision; 25–53: double precision | FLOAT |
| Decimal | DECFLOAT(p) | — | DECIMAL(65,10) |
| Date/time | DATE | 0001-01-01 to 9999-12-31 | DATE |
| Date/time | TIME | 00:00:00 to 24:00:00 | TIME |
| Date/time | TIMESTAMP(p) | 0001-01-01-00.00.00 to 9999-12-31-24.00.00; 0 ≤ p ≤ 12 | DATETIME |
| String | CHARACTER(n) | 254 | CHAR | VARCHAR |
| String | VARCHAR(n) | 32,672 | VARCHAR |
| String | CHARACTER(n) FOR BIT DATA | 254 | BLOB |
| String | CLOB | 2,147,483,647 | LONGTEXT |
| String | GRAPHIC(n) | 127 | CHAR(length*4) |
| String | VARGRAPHIC(n) | 16,336 | CHAR(length*4) |
| String | DBCLOB(n) | 1,073,741,823 | VARCHAR | LONGTEXT |
| String | BLOB | 2,147,483,647 | LONGBLOB |
| Other | XML | 2,147,483,647 | VARCHAR | LONGTEXT |
Data synchronization from a Db2 for i source
When the source is a Db2 for i database, DTS maps data types to MySQL as shown below.
| Type | Db2 for i data type | Value range | MySQL data type |
|---|---|---|---|
| Integer | SMALLINT | -32,768 to +32,767 | SMALLINT |
| Integer | INTEGER | -2,147,483,648 to +2,147,483,647 | INT |
| Integer | BIGINT | -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 | BIGINT |
| Decimal | DECIMAL(p,s) | p ≤ 63 | DECIMAL |
| Decimal | NUMERIC | — | DECIMAL |
| Decimal | FLOAT(n) | — | FLOAT |
| Decimal | DECFLOAT(p) | — | DECIMAL(65,10) |
| Date/time | DATE | 0001-01-01 to 9999-12-31 | DATE |
| Date/time | TIME | 00:00:00 to 24:00:00 | TIME |
| Date/time | TIMESTAMP(p) | 0001-01-01-00.00.00 to 9999-12-31-24.00.00; 0 ≤ p ≤ 12 | DATETIME |
| String | CHAR(n) | 32,765 | CHAR | VARCHAR |
| String | VARCHAR(n) | 32,739 | VARCHAR |
| String | CHAR(n) FOR BIT DATA | — | BLOB |
| String | CLOB | 2,147,483,647 | LONGTEXT |
| String | GRAPHIC(n) | 16,382 | CHAR |
| String | VARGRAPHIC(n) | 16,369 | VARCHAR |
| String | DBCLOB(n) | 1,073,741,823 | LONGTEXT |
| String | BINARY | 32,765 | BINARY |
| String | VARBIN | 32,739 | VARBINARY |
| String | BLOB | 2,147,483,647 | LONGBLOB |
| Other | DATALINK | — | VARCHAR | LONGTEXT |
| Other | ROWID | 40 | VARCHAR | LONGTEXT |
| Other | XML | 2,147,483,647 | VARCHAR | LONGTEXT |
Data synchronization from a TiDB source
When the source is a self-managed TiDB database and the destination is AnalyticDB for MySQL 3.0, DTS converts TiDB types to MySQL-compatible types as shown below.
| TiDB data type | MySQL data type |
|---|---|
| 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 |