不同類型的資料庫(異構資料庫)支援的資料類型不一樣,DTS在進行異構資料庫之間的資料移轉時,會在結構遷移階段進行資料類型映射,即將源庫中的資料類型轉為目標庫支援的資料類型。本文為您列出詳細資料類型映射關係,便於您查閱和評估資料移轉對業務的影響。
概覽
根據如下遷移方案,查看異構資料庫間的資料類型映射關係:
若源端時間欄位的資料類型為TIMESTAMP WITH TIME ZONE,目標端時間欄位的資料類型為DATETIME等異構資料類型,時間欄位的時區資訊將會丟失。
以PolarDB MySQL、RDS MySQL、自建MySQL為源的資料移轉
當源執行個體為PolarDB MySQL、RDS MySQL、自建MySQL,且目標執行個體為異構資料庫時(包括雲原生資料倉儲AnalyticDB MySQL版和2.0、雲原生資料倉儲AnalyticDB PostgreSQL版),兩者間的資料類型映射關係如下:
如源執行個體中待遷移資料範圍超出DTS所支援的範圍,則會導致目標執行個體中的所遷入資料的精度降低。
類型 | 源執行個體的資料類型 | 數值範圍 | 雲原生資料倉儲AnalyticDB MySQL版的資料類型 | 雲原生資料倉儲AnalyticDB PostgreSQL版的資料類型 |
整數類型 | BIT[(M)] | 1 ~ 64 | VARCHAR | BIT[(M)] |
TINYINT[(M)] | -128 ~ 127 | TINYINT | SMALLINT | |
TINYINT[(M)] [UNSIGNED] | 0 ~ 255 | SMALLINT | SMALLINT | |
SMALLINT[(M)] | -32768 ~ 32767 | SMALLINT | SMALLINT | |
SMALLINT[(M)] [UNSIGNED] | 0 ~ 65535 | INT | INTEGER | |
MEDIUMINT[(M)] | -8388608 ~ 8388607 | INT | INTEGER | |
MEDIUMINT[(M)] [UNSIGNED] | 0 ~ 16777215 | INT | INTEGER | |
INT[(M)] | -2147483648 ~ 2147483647 | INT | INTEGER | |
INT[(M)] [UNSIGNED] | 0 ~ 4294967295 | BIGINT | BIGINT | |
BIGINT[(M)] | -9223372036854775808 ~ 9223372036854775807 | BIGINT | BIGINT | |
BIGINT[(M)] [UNSIGNED] | 0 ~ 18446744073709551615. | DECIMAL(20,0) | NUMERIC(20) | |
小數類型 | DECIMAL[(M[,D])] | M:0~65 ; D:0~30 | DECIMAL[(M[,D])] | DECIMAL[(M[,D])] |
FLOAT(p) | 1.175494351E-38 ~ 3.402823466E+38 | FLOAT | REAL | |
DOUBLE[(M,D)] | 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | DOUBLE | DOUBLE PRECISION | |
時間類型 | DATE | 1000-01-01~9999-12-31 說明 格式為YYYY-MM-DD。 | 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[(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 WITH TIME ZONE | |
TIME[(fsp)] | -838:59:59.000000 ~ 838:59:59.000000 說明 格式為hh:mm:ss[.fraction](UTC時間)。 | TIME | TIME WITHOUT TIME ZONE | |
YEAR[(4)] | 1901 ~ 2155,或0000. | INT | INTEGER | |
字串類型 | CHAR[(M)] | 0 ~ 255 字元 | VARCHAR | CHAR |
VARCHAR(M) | 0 ~ 65,535 字元 | VARCHAR | VARCHAR | |
BINARY[(M)] | 0 ~ 255 位元組 | VARBINARY | BYTEA | |
VARBINARY(M) | 0 ~ 65,535 位元組 | VARBINARY | BYTEA | |
TINYBLOB | 255 (2^8 - 1) 位元組 | VARBINARY | BYTEA | |
TINYTEXT | 255 (2^8 - 1) 字元 | VARCHAR | TEXT | |
BLOB | 65,535 (2^16 - 1) 位元組 | VARBINARY | BYTEA | |
TEXT | 65,535 (2^16 - 1) 字元 | VARCHAR | TEXT | |
MEDIUMBLOB | 16,777,215 (2^24 - 1) 位元組 | VARBINARY | BYTEA | |
MEDIUMTEXT | 16,777,215 (2^24 - 1) 字元 | VARCHAR | TEXT | |
LONGBLOB | 4,294,967,295 or 4GB (2^32 - 1) 位元組 | VARBINARY | BYTEA | |
LONGTEXT | 4,294,967,295 or 4GB (2^32 - 1) 字元 | VARCHAR | TEXT | |
ENUM('value1','value2',...) | 最多可包含65,535枚舉值 | VARCHAR | VARCHAR(128) | |
SET('value1','value2',...) | 最多可包含64個元素 | VARCHAR | VARCHAR(128) | |
空間類型 | GEOMETRY | 任意幾何類型的值 | VARBINARY | POLYGON |
POINT | 無 | VARBINARY | POINT | |
LINESTRING | 無 | VARBINARY | PATH | |
POLYGON | 無 | VARBINARY | POLYGON | |
MULTIPOINT | 無 | VARBINARY | POLYGON | |
MULTILINESTRING | 無 | VARBINARY | PATH | |
MULTIPOLYGON | 無 | VARBINARY | POLYGON | |
GEOMETRYCOLLECTION | 任何幾何類型的值的集合 | VARBINARY | POLYGON | |
JSON類型 | JSON | 無 | JSON | JSON |
目標執行個體為DataHub、Kafka(阿里雲訊息佇列Kafka、自建Kafka)
類型 | 源執行個體的資料類型 | 數值範圍 | DataHub的資料類型 | 阿里雲訊息佇列Kafka、自建Kafka的資料類型 |
整數類型 | BIT[(M)] | 1 ~ 64 | BOOLEAN | STRING | 與MySQL、PolarDB MySQL的資料類型保持一致 |
TINYINT[(M)] | -128 ~ 127 | BIGINT | ||
TINYINT[(M)] [UNSIGNED] | 0 ~ 255 | BIGINT | ||
SMALLINT[(M)] | -32768 ~ 32767 | BIGINT | ||
SMALLINT[(M)] [UNSIGNED] | 0 ~ 65535 | BIGINT | ||
MEDIUMINT[(M)] | -8388608 ~ 8388607 | BIGINT | ||
MEDIUMINT[(M)] [UNSIGNED] | 0 ~ 16777215 | BIGINT | ||
INT[(M)] | -2147483648 ~ 2147483647 | BIGINT | ||
INT[(M)] [UNSIGNED] | 0 ~ 4294967295 | BIGINT | ||
BIGINT[(M)] | -9223372036854775808 ~ 9223372036854775807 | BIGINT | ||
BIGINT[(M)] [UNSIGNED] | 0 ~ 18446744073709551615 | BIGINT | ||
小數類型 | DECIMAL[(M[,D])] | M:0~65 ; D:0~30 | DECIMAL | |
FLOAT(p) | 1.175494351E-38 ~ 3.402823466E+38 | DOUBLE | ||
DOUBLE[(M,D)] | 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | DOUBLE | ||
時間類型 | DATE | 1000-01-01~9999-12-31 說明 格式為YYYY-MM-DD。 | TIMESTAMP | |
DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 說明 格式為YYYY-MM-DD hh:mm:ss[.fraction](UTC時間)。 | TIMESTAMP | ||
TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.999999 說明 格式為YYYY-MM-DD hh:mm:ss[.fraction](UTC時間)。 | TIMESTAMP | ||
TIME[(fsp)] | -838:59:59.000000 ~ 838:59:59.000000 說明 格式為hh:mm:ss[.fraction](UTC時間)。 | STRING | ||
YEAR[(4)] | 1901 ~ 2155,或0000. | STRING | ||
字串類型 | CHAR[(M)] | 0 ~ 255 字元 | STRING | |
VARCHAR(M) | 0 ~ 65,535 字元 | STRING | ||
BINARY[(M)] | 0 ~ 255 位元組 | STRING | ||
VARBINARY(M) | 0 ~ 65,535 位元組 | STRING | ||
TINYBLOB | 255 (2^8 − 1) 位元組 | STRING | ||
TINYTEXT | 255 (2^8 − 1) 字元 | STRING | ||
BLOB | 65,535 (2^16 − 1) 位元組 | STRING | ||
TEXT | 65,535 (2^16 − 1) 字元 | STRING | ||
MEDIUMBLOB | 16,777,215 (2^24 − 1) 位元組 | STRING | ||
MEDIUMTEXT | 16,777,215 (2^24 − 1) 字元 | STRING | ||
LONGBLOB | 4,294,967,295 or 4GB (2^32 − 1) 位元組 | STRING | ||
LONGTEXT | 4,294,967,295 or 4GB (2^32 − 1) 字元 | STRING | ||
ENUM('value1','value2',...) | 最多可包含65,535元素 | STRING | ||
SET('value1','value2',...) | 最多可包含64個元素 | STRING | ||
空間類型 | GEOMETRY | 任意幾何類型的值 | STRING | |
POINT | 無 | STRING | ||
LINESTRING | 無 | STRING | ||
POLYGON | 無 | STRING | ||
MULTIPOINT | 無 | STRING | ||
MULTILINESTRING | 無 | STRING | ||
MULTIPOLYGON | 無 | STRING | ||
GEOMETRYCOLLECTION | 任何幾何類型的值的集合 | STRING | ||
JSON類型 | JSON | 無 | STRING |
目標執行個體為MaxCompute、Elasticsearch、ClickHouse
類型 | 源執行個體中的資料類型 | 數值範圍 | MaxCompute | Elasticsearch | ClickHouse |
整數類型 | BIT[(M)] | 1 ~ 64 | BOOLEAN | STRING | BOOLEAN | LONG 說明 如果只有一個位元組,建議在Elasticsearch中使用BOOLEAN。 | UInt8 |
TINYINT[(M)] | -128 ~ 127 | BIGINT | SHORT | Int8 | |
TINYINT[(M)] [UNSIGNED] | 0 ~ 255 | BIGINT | INTEGER | UInt8 | |
SMALLINT[(M)] | -32768 ~ 32767 | BIGINT | SHORT | Int16 | |
SMALLINT[(M)] [UNSIGNED] | 0 ~ 65535 | BIGINT | INTEGER | UInt16 | |
MEDIUMINT[(M)] | -8388608 ~ 8388607 | BIGINT | INTEGER | Int32 | |
MEDIUMINT[(M)] [UNSIGNED] | 0 ~ 16777215 | BIGINT | INTEGER | Int32 | |
INT[(M)] | -2147483648 ~ 2147483647 | BIGINT | INTEGER | Int32 | |
INT[(M)] [UNSIGNED] | 0 ~ 4294967295 | BIGINT | LONG | UInt32 | |
BIGINT[(M)] | -9223372036854775808 ~ 9223372036854775807 | BIGINT | LONG | Int64 | |
BIGINT[(M)] [UNSIGNED] | 0 ~ 18446744073709551615 | BIGINT | LONG | UInt64 | |
小數類型 | DECIMAL[(M[,D])] | M:0~65 ; D:0~30 | DOUBLE | DOUBLE 說明 如果DECIMAL的值帶有小數點,那麼為保障資料一致性,建議在Elasticsearch中使用TEXT。 | DECIMAL |
FLOAT(p) | 1.175494351E-38 ~ 3.402823466E+38 | DOUBLE | FLOAT | Float32 | |
DOUBLE[(M,D)] | 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | DOUBLE | DOUBLE | Float64 | |
時間類型 | DATE | 1000-01-01~9999-12-31 說明 格式為YYYY-MM-DD。 | DATETIME | DATE 說明 格式為YYYY-MM-DD,詳情請參見date format的mapping定義。 | DATE32 |
DATETIME[(fsp)] | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 說明 格式為YYYY-MM-DD hh:mm:ss[.fraction](UTC時間)。 | DATETIME | DATE 說明 DATE格式為yyyy-MM-dd’T’HH:mm:ss(UTC時間)。如果精度為微秒,那麼格式為yyyy-MM-dd’T’HH:mm:ss.S,詳情請參見date format的mapping定義。 | DATETIME64 | |
TIMESTAMP[(fsp)] | 1970-01-01 00:00:01.000000 ~ 2038-01-19 03:14:07.999999 說明 格式為YYYY-MM-DD hh:mm:ss[.fraction](UTC時間)。 | DATETIME | DATE 說明 DATE格式為yyyy-MM-dd’T’HH:mm:ss(UTC時間)。如果精度為微秒,那麼格式為yyyy-MM-dd’T’HH:mm:ss.S,詳情請參見date format的mapping定義。 | DATETIME 說明 不包含時區資訊。 | |
TIME[(fsp)] | -838:59:59.000000 ~ 838:59:59.000000 說明 格式為hh:mm:ss[.fraction](UTC時間)。 | STRING | DATE 說明 格式為YYYY-MM-DD,詳情請參見date format的mapping定義。 | STRING | |
YEAR[(4)] | 1901 ~ 2155,或0000. | STRING | DATE 說明 DATE格式為yyyy,詳情請參見date format的mapping定義。 | Int16 | |
字串類型 | CHAR[(M)] | 0 ~ 255 字元 | STRING | TEXT | STRING |
VARCHAR(M) | 0 ~ 65,535 字元 | STRING | TEXT | STRING | |
BINARY[(M)] | 0 ~ 255 位元組 | STRING | BINARY | STRING | |
VARBINARY(M) | 0 ~ 65,535 位元組 | STRING | BINARY | STRING | |
TINYBLOB | 255 (2^8 − 1) 位元組 | STRING | BINARY | STRING | |
TINYTEXT | 255 (2^8 − 1) 字元 | STRING | TEXT | STRING | |
BLOB | 65,535 (2^16 − 1) 位元組 | STRING | BINARY | STRING | |
TEXT | 65,535 (2^16 − 1) 字元 | STRING | TEXT | STRING | |
MEDIUMBLOB | 16,777,215 (2^24 − 1) 位元組 | STRING | BINARY | STRING | |
MEDIUMTEXT | 16,777,215 (2^24 − 1) 字元 | STRING | TEXT | STRING | |
LONGBLOB | 4,294,967,295 or 4GB (2^32 − 1) 位元組 | STRING | BINARY | STRING | |
LONGTEXT | 4,294,967,295 or 4GB (2^32 − 1) 字元 | STRING | TEXT | STRING | |
ENUM('value1','value2',...) | 最多可包含65,535枚舉值 | STRING | KEYWORD | ENUM | |
SET('value1','value2',...) | 最多可包含64個元素 | STRING | KEYWORD | STRING | |
空間類型 | GEOMETRY | 任意幾何類型的值 | STRING | GEO_SHAPE | STRING |
POINT | 無 | STRING | GEO_POINT | STRING | |
LINESTRING | 無 | STRING | GEO_SHAPE | STRING | |
POLYGON | 無 | STRING | GEO_SHAPE | STRING | |
MULTIPOINT | 無 | STRING | GEO_SHAPE 說明 如果只有一個位元組,建議在Elasticsearch中使用BOOLEAN。 | STRING | |
MULTILINESTRING | 無 | STRING | GEO_SHAPE | STRING | |
MULTIPOLYGON | 無 | STRING | GEO_SHAPE | STRING | |
GEOMETRYCOLLECTION | 任何幾何類型的值的集合 | STRING | GEO_SHAPE | STRING | |
JSON類型 | JSON | 無 | STRING | OBJECT 說明 如果只有一個位元組,建議在Elasticsearch中使用BOOLEAN。 | STRING |
目標執行個體為Tablestore
源執行個體中的資料類型 | Tablestore對應的資料類型 |
INTEGER | INTEGER |
INT | INTEGER |
SMALLINT | INTEGER |
TINYINT | INTEGER |
MEDIUMINT | INTEGER |
BIGINT | INTEGER |
DECIMAL | DOUBLE |
NUMERIC | DOUBLE |
FLOAT | DOUBLE |
DOUBLE | DOUBLE |
BIT | BOOLEAN |
DATE | STRING或INTEGER 說明 預設為STRING。 |
TIMESTAMP | |
DATETIME | |
TIME | |
YEAR | |
CHAR | STRING |
VARCHAR | STRING |
BINARY | BINARY |
VARBINARY | BINARY |
TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB | BINARY |
TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT | STRING |
ENUM | STRING |
SET | STRING |
GEOMETRY | STRING |
POINT | STRING |
LINESTRING | STRING |
POLYGON | STRING |
MULTIPOINT | STRING |
MULTILINESTRING | STRING |
MULTIPOLYGON | STRING |
GEOMETRYCOLLECTION | STRING |
JSON | STRING |
目標執行個體為Lindorm
源執行個體中的資料類型 | Lindorm對應的資料類型 |
BOOLEAN | BOOLEAN |
BIT | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INTEGER | INTEGER |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DECIMAL | DECIMAL |
CHAR/VARCHAR/TEXT/TINYTEXT/MEDIUMTEXT/LONGTEXT | CHAR/VARCHAR |
BINARY | BINARY |
BLOB | VARBINARY |
VARBINAY | VARBINARY |
TIMESTAMP | TIMESTAMP |
YEAR | INTEGER |
DATE | VARCHAR |
DATETIME | VARCHAR 重要
|
TIME | VARCHAR |
JSON | JSON |
以Oracle為源的資料移轉
當源執行個體為自建Oracle,且目標執行個體為異構資料庫時(包括MySQL、PolarDB MySQL、雲原生資料倉儲AnalyticDB MySQL版、雲原生資料倉儲AnalyticDB PostgreSQL版、PolarDB PostgreSQL版(相容Oracle)),兩者間的資料類型映射關係如下:
如源執行個體中待遷移資料範圍超出DTS所支援的範圍,則會導致目標執行個體中的所遷入資料的精度降低。
類型 | Oracle的資料類型 | 數值範圍 | MySQL、PolarDB MySQL、PolarDB-X的資料類型 | RDS PPAS的資料類型 | 雲原生資料倉儲AnalyticDB MySQL版的資料類型 | 雲原生資料倉儲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版、雲原生資料倉儲AnalyticDB PostgreSQL版、PostgreSQL、MySQL),兩者間的資料類型映射關係如下:
如源執行個體中待遷移資料範圍超出DTS所支援的範圍,則會導致目標執行個體中的所遷入資料的精度降低。
類型 | SQL Server的資料類型 | 數值範圍 | 雲原生資料倉儲AnalyticDB MySQL版的資料類型 | 雲原生資料倉儲AnalyticDB PostgreSQL版的資料類型 | PostgreSQL的資料類型 | MySQL的資料類型 |
整數類型 | BIT | 可以取值為1、0或NULL的INTEGER資料類型 | BOOLEAN | BIT(1) | BIT | |
TINYINT | 0至255 | TINYINT | SMALLINT | TINYINT | ||
SMALLINT | -2^15(-32768)至2^15-1(32767) | SMALLINT | SMALLINT | SMALLINT | ||
INT | -2^31(-2147483648)至2^31-1(2147483647) | INTEGER | INTEGER | INT | ||
BIGINT | -2^63(-9223372036854775808)至2^63-1(9223372036854775807) | BIGINT | BIGINT | BIGINT | ||
小數類型 | NUMERIC[ (p[ ,s] )] | -10^38+1至10^38-1; 1<=p<=38 | DECIMAL | DECIMAL | DECIMAL[ (p[ ,s] )] | |
DECIMAL[ (p[ ,s] )] | -10^38+1至10^38-1; 1<= p<=38 | DECIMAL | DECIMAL | DECIMAL[ (p[ ,s] )] | ||
FLOAT | -1.79E+308至-2.23E -308、0 以及2.23E-308至1.79E+308 | DOUBLE | DOUBLE PRECISION | DOUBLE | ||
REAL | -3.40E+38至-1.18E- 38、0 以及1.18E-38至3.40E +38 | FLOAT | REAL | DOUBLE | ||
貨幣類型 | MONEY | -922,337,203,685,477.5808至922,337,203,685,477.5807 | DECIMAL(19, 4) | DECIMAL(19, 4) | DECIMAL | |
SMALLMONEY | -214,748.3648至214,748.3647 | DECIMAL(10, 4) | DECIMAL(10, 4) | DECIMAL | ||
日期類型 | DATE | 0001-01-01至9999-12-31 | DATE | DATE | DATE | |
DATETIME | 日期範圍為1753年1月1日至9999年12月31日; 時間範圍為00:00:00至 23:59:59.997 | DATETIME | TIMESTAMP(3) WITHOUT TIME ZONE | DATETIME | ||
DATETIME2[ (fractional seconds precision) ] | 日期範圍為公元1年1月1日至公元9999年12月31日; 時間範圍為00:00:00至23:59:59.9999999 | DATETIME | TIMESTAMP(7) WITHOUT TIME ZONE | DATETIME | ||
DATETIMEOFFSET [ (fractional seconds precision) ] | 日期範圍公元1年1月1日至公元9999年12月31日; 時間範圍為00:00:00至 23:59:59.9999999; 時區位移量範圍-14:00至+14:00 | TIMESTAMP | TIMESTAMP(7) WITH TIME ZONE | DATETIME | ||
SMALLDATETIME | 秒始終為零 (:00),並且不帶秒小數部分 | DATETIME | TIMESTAMP WITHOUT TIME ZONE | DATETIME | ||
TIME [ (fractional second scale) ] | 00:00:00.0000000至23:59:59.9999999 | TIME | TIME(7) WITH TIME ZONE | TIME | ||
字串類型 | BINARY [ ( n ) ] | n取值範圍為1~8,000 | VARBINARY | BYTEA | BINARY | |
VARBINARY [ ( n | max) ] | n取值範圍為1~8,000;max代表最大儲存大小是2^31-1 個位元組 | VARBINARY | BYTEA | VARBINARY | ||
CHAR [ ( n ) ] | n取值範圍為1~8,000,儲存大小為n個位元組 | VARCHAR | CHARACTER |
| ||
VARCHAR [ ( n | max ) ] | n取值範圍為1~8,000;max代表最大儲存大小是 2^31-1 個位元組(2GB) | VARCHAR | CHARACTER |
| ||
NCHAR [ ( n ) ] | 以雙位元組為單位,n 取值範圍為1至4,000,儲存大小為 n位元組的兩倍 | VARCHAR | CHARACTER VARYING | VARCHAR(200) | ||
NVARCHAR [ ( n | max ) ] | 以雙位元組為單位,n取值範圍為1至4,000,max代表最大儲存大小是2^30-1個字元(2 GB) | VARCHAR | CHARACTER VARYING |
| ||
NTEXT | 長度可變的Unicode 資料,字串最大長度為2^30-1(1073741823)個位元組 | VARCHAR | TEXT | TEXT | ||
TEXT | 字串最大長度為2^31-1(2147483647)個位元組 | VARCHAR | TEXT | TEXT | ||
IMAGE | 長度可變的位元據,從0到2^31-1 (2147483647)個位元組。 | VARBINARY | BYTEA | BLOB | ||
空間和幾何類型 | GEOGRAPHY | 無 | VARCHAR | 不支援 | BLOB | |
GEOMETRY | 無 | VARCHAR | 不支援 | BLOB | ||
XML類型 | XML ( [ CONTENT | DOCUMENT ] xml_schema_collection ) | 無 | VARCHAR | XML | TEXT | |
其他類型 | UNIQUEIDENTIFIER | 無 | VARCHAR | CHARACTER(36) | VARCHAR(200) | |
SQL_VARIANT | 無 | 不支援 | 不支援 | VARCHAR(200) | ||
HIERARCHYID | 無 | 不支援 | 不支援 | VARCHAR(200) | ||
SYSNAME | 無 | VARCHAR | CHARACTER VARYING(128) | VARCHAR(200) |
以自建TiDB為源的資料移轉
當源執行個體為自建TiDB,且目標執行個體為異構資料庫時(如MySQL、AnalyticDB MySQL 3.0),兩者間的資料類型映射關係如下:
TiDB資料類型 | MySQL的資料類型 |
BIGINT | BIGINT |
BIGINT UNSIGNED | DECIMAL(20,0) |
BINARY | BINARY |
BIT | BIT |
BOOL\ BOOLEAN | TINYINT |
CHAR | CHAR |
DATE | DATE |
DATETIME | DATETIME |
DECIMAL | DECIMAL |
DOUBLE | DOUBLE |
ENUM | ENUM |
FLOAT | FLOAT |
INT | INT |
INT UNSIGNED | BIGINT |
INTEGER | INTEGER |
JSON | JSON |
MEDIUMBLOB/LONGBLOB TINYBLOB/BLOB/ | MEDIUMBLOB/LONGBLOB TINYBLOB/BLOB/ |
MEDIUMINT | MEDIUMINT |
SET | SET |
SMALLINT | SMALLINT |
SMALLINT UNSIGNED | INT |
TEXT/LONGTEXT | TEXT/LONGTEXT |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
TINYINT | TINYINT |
TINYINT UNSIGNED | SMALLINT |
VARBINARY | VARBINARY |
VARCHAR | VARCHAR |
YEAR | YEAR |
以DB2 for LUW為源的資料移轉
當源執行個體為DB2 for LUW,且目標執行個體為異構資料庫時(包括MySQL),兩者間的資料類型映射關係如下:
如源執行個體中待遷移資料範圍超出DTS所支援的範圍,則會導致目標執行個體中的所遷入資料的精度降低。
類型 | DB2 for LUW資料類型 | 數值範圍 | MySQL的資料類型 |
整數類型 | SMALLINT | -32,768~+32,767 | SMALLINT |
INTEGER | -2,147,483,648~+2,147,483,647 | INT | |
BIGINT | -9,223,372,036,854,775,808~ +9,223,372,036,854,775,807 | BIGINT | |
小數類型 | DECIMAL(precision-integer, scale-integer) | p<=38 | DECIMAL |
FLOAT(integer) | 取值範圍為1~53,取值在1~24表示為單精確度,取值在25~53表示為雙精確度 | FLOAT | |
DECFLOAT(precision-integer) | 無 | DECIMAL(65,10) | |
日期類型 | DATE | 0001-01-01~9999-12-31 | DATE |
TIME | 00:00:00~24:00:00 | TIME | |
TIMESTAMP(integer) | 0001-01-01-00.00.00.000000000000~9999-12-31-24.00.00.000000000000;0<=p<= 12 | DATETIME | |
字串類型 | CHARACTER(integer) | 254 | CHAR | VARCHAR |
VARCHAR(integer) | 32,672 | VARCHAR | |
CHARACTER(integer) FOR BIT DATA | 254 | BLOB | |
CLOB | 2,147,483,647 | LONGTEXT | |
GRAPHIC(integer) | 127 | CHAR(length*4) | |
VARGRAPHIC(integer) | 16,336 | CHAR(length*4) | |
DBCLOB(integer) | 1,073,741,823 | VARCHAR | LONGTEXT | |
BLOB | 2,147,483,647 | LONGBLOB | |
其他類型 | XML | 2,147,483,647 | VARCHAR | LONGTEXT |
以Db2 for i為源的資料移轉
當源執行個體為DB2 for i,且目標執行個體為異構資料庫時(包括MySQL),兩者間的資料類型映射關係如下:
如源執行個體中待遷移資料範圍超出DTS所支援的範圍,則會導致目標執行個體中的所遷入資料的精度降低。
類型 | Db2 for i 資料類型 | 數值範圍 | MySQL中的資料類型 |
整數類型 | SMALLINT | -32,768~+32,767 | SMALLINT |
INTEGER | -2,147,483,648~+2,147,483,647 | INT | |
BIGINT | -9,223,372,036,854,775,808~ +9,223,372,036,854,775,807 | BIGINT | |
小數類型 | DECIMAL(precision-integer, scale-integer) | p<=63 | DECIMAL |
NUMERIC | 無 | DECIMAL | |
FLOAT(integer) | 無 | FLOAT | |
DECFLOAT(precision-integer) | 無 | DECIMAL(65,10) | |
日期類型 | DATE | 0001-01-0~9999-12-31 | DATE |
TIME | 00:00:00~24:00:00 | TIME | |
TIMESTAMP(integer) | 0001-01-01-00.00.00.000000000000~9999-12-31-24.00.00.000000000000;0 <=p <=12 | DATETIME | |
字串類型 | CHAR(integer) | 32,765 | CHAR | VARCHAR |
VARCHAR(integer) | 32,739 | VARCHAR | |
CHAR(integer) FOR BIT DATA | 無 | BLOB | |
CLOB | 2,147,483,647 | LONGTEXT | |
GRAPHIC(integer) | 16,382 | CHAR | |
VARGRAPHIC(integer) | 16,369 | VARCHAR | |
DBCLOB(integer) | 1,073,741,823 | LONGTEXT | |
BINARY | 32,765 | BINARY | |
VARBIN | 32,739 | VARBINARY | |
BLOB | 2,147,483,647 | LONGBLOB | |
其他類型 | DATALINK | 無 | VARCHAR | LONGTEXT |
ROWID | 40 | VARCHAR | LONGTEXT | |
XML | 2,147,483,647 | VARCHAR | LONGTEXT |
以Teradata為源的資料移轉
當源執行個體為Teradata,且目標執行個體為異構資料庫時(如雲原生資料倉儲AnalyticDB PostgreSQL版),兩者間的資料類型映射關係如下:
Teradata資料類型 | AnalyticDB PostgreSQL中的資料類型 |
BYTEINT | SMALLINT |
SMALLINT | SMALLINT |
BIGINT | BIGINT |
INTEGER | INTEGER |
DATE | DATE |
JSON | JSON |
XML | XML |
CLOB | text |
Float | real |
CHAR | CHAR |
VARCHAR | VARCHAR |
Timestamp | Timestamp |
TIME | TIME |
Timestamp With Time Zone | Timestamp With Time Zone |
Time With Time Zone | Time With Time Zone |
Decimal | Decimal |
Number | numeric |
BYTE | bytea |
VARBYTE | bytea |
BLOB | bytea |
PERIOD | varchar(100) |
INTERVAL | varchar(100) |
Teradata資料類型 | AnalyticDB PostgreSQL中的資料類型 |
SMALLINT | SMALLINT |
INTEGER | INT |
BIGINT | BIGINT |
DECIMAL(precision-integer, scale-integer) | DECIMAL |
NUMERIC | DECIMAL |
FLOAT(integer) | FLOAT |
DECFLOAT(precision-integer) | DECIMAL(65,10) |
DATE | DATE |
TIME | TIME |
TIMESTAMP(integer) | DATETIME |
CHAR(integer) | CHAR | VARCHAR |
VARCHAR(integer) | VARCHAR |
CHAR(integer) FOR BIT DATA | BLOB |
CLOB | LONGTEXT |
GRAPHIC(integer) | CHAR |
VARGRAPHIC(integer) | VARCHAR |
DBCLOB(integer) | LONGTEXT |
BINARY | BINARY |
VARBIN | VARBINARY |
BLOB | LONGBLOB |
DATALINK | VARCHAR | LONGTEXT |
ROWID | VARCHAR | LONGTEXT |
XML | VARCHAR | LONGTEXT |