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

从MySQL/RDS for MySQL/POLARDB for MySQL同步至AnalyticDB for MySQL

MySQL数据类型 AnalyticDB for MySQL数据类型
BIGINT BIGINT
BIT BOOLEAN
CHAR VARCHAR
DATE DATE
DATETIME TIMESTAMP
DECIMAL DECIMAL
DOUBLE DOUBLE
ENUM VARCHAR
FLOAT REAL
INT INT
INTEGER INT
JSON JSON
MEDIUMINT INT
NUMERIC DECIMAL
SET VARCHAR
SMALLINT SMALLINT
TIME TIME
TIMESTAMP TIMESTAMP
TINYINT SMALLINT
TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT VARCHAR
VARCHAR VARCHAR
YEAR INTEGER

从MySQL/RDS for MySQL/POLARDB for 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定义