由于不同的数据库支持的数据类型不一样,数据类型无法一一对应。所以DTS在进行数据同步的结构初始化时,会根据目标库支持的数据类型进行类型映射。本文为您列出数据类型的映射关系,便于您查阅和评估数据同步对业务的影响。

从自建MySQL、RDS MySQL或PolarDB MySQL同步至AnalyticDB for MySQL

MySQL数据类型 AnalyticDB for MySQL数据类型
bigint unsigned decimal(20,0)
binary VARBINARY
bit VARCHAR
blob VARBINARY
char varchar
date DATE
datetime DATETIME
decimal decimal
double double
enum VARCHAR
FLOAT FLOAT
geometry VARBINARY
geometrycollection VARBINARY
int unsigned BIGINT
integer int
json JSON
linestring VARBINARY
LONGBLOB VARBINARY
LONGTEXT varchar
MEDIUMBLOB VARBINARY
mediumint int
mediumint unsigned INT
MEDIUMTEXT varchar
multilinestring VARBINARY
multipoint VARBINARY
multipolygon VARBINARY
numberic DECIMAL
point VARBINARY
polygon VARBINARY
set VARCHAR
smallint unsigned INT
text VARCHAR
time TIME
timestamp TIMESTAMP
TINYBLOB VARBINARY
tinyint unsigned SMALLINT
TINYTEXT varchar
VARBINARY VARBINARY
varchar varchar
year INT

从自建MySQL、RDS MySQL或PolarDB MySQL同步至ElasticSearch

MySQL数据类型 Elasticsearch数据类型 说明
BIGINT LONG
BINARY BINARY
BIT LONG 如果只有一个字节,建议在Elasticsearch中使用BOOLEAN。
BLOB BINARY
BOOL/BOOLEAN BOOLEAN
CHAR TEXT
DATE DATE DATE格式为yyyy-MM-dd(UTC时间),详情请参见date format的mapping定义
DATETIME DATE DATE格式为yyyy-MM-dd’T’HH:mm:ss(UTC时间)。如果精度为微秒,那么格式为yyyy-MM-dd’T’HH:mm:ss.S,详情请参见date format的mapping定义
DECIMAL/DEC DOUBLE 如果DECIMAL的值带有小数点,那么为保障数据一致性,建议在Elasticsearch中使用TEXT。
DOUBLE DOUBLE
FLOAT FLOAT
GEOMETRY GEO_SHAPE
GEOMETRYCOLLECTION GEO_SHAPE
INT INTEGER 如果源库中的类型为UNSIGNED INT,那么在Elasticsearch中使用LONG。
JSON OBJECT 如果只有一个字节,建议在Elasticsearch中使用BOOLEAN。
LINESTRING GEO_SHAPE
LONGTEXT TEXT
MEDIUMINT INTEGER
MEDIUMTEXT TEXT
MULTILINESTRING GEO_SHAPE
MULTIPOINT GEO_SHAPE 如果只有一个字节,建议Elasticsearch中使用BOOLEAN。
MULTIPOLYGON GEO_SHAPE
POINT GEO_POINT
POLYGON GEO_SHAPE
REAL DOUBLE
SMALLINT SHORT 如果源库中的类型为UNSIGNED SMALLINT,那么在Elasticsearch中使用INTEGER。
TIME DATE DATE格式为HH:mm:ss(UTC时间)。如果精度为微秒,那么格式为HH:mm:ss.S,详情请参见date format的mapping定义
TIMESTAMP DATE DATE格式为yyyy-MM-dd’T’HH:mm:ss(UTC时间),如果精度为微秒,那么格式为yyyy-MM-dd’T’HH:mm:ss.S ,详情请参见date format的mapping定义
TINYINT SHORT 如果源库中的类型为UNSIGNED TINYINT,那么在Elasticsearch中使用的类型为INTEGER。
TINYTEXT TEXT
VARCHAR TEXT
YEAR DATE DATE格式为yyyy(UTC时间),详情请参见date format的mapping定义