更新时间:2024-09-23 GMT+08:00
分享

MySQL->PostgreSQL

表1 数据类型映射关系

数据类型(MySQL)

数据类型(PostgreSQL)

是否支持映射

BIGINT

NUMERIC|BIGINT

支持

BINARY

BYTEA

支持

BIT

BIT

支持

BLOB

BYTEA

支持

BOOLEAN

BOOL

支持

CHAR

CHAR

支持

DATE

DATE

支持

DATETIME

TIMESTAMP

支持

DECIMAL

NUMERIC

支持

DOUBLE

FLOAT8

支持

ENUM

VARCHAR

支持

FLOAT

FLOAT4|FLOAT8

支持

INT

INTEGER

支持

LONGBLOB

BYTEA

支持

LONGTEXT

TEXT

支持

MEDIUMBLOB

BYTEA

支持

MEDIUMINT

INT

支持

SET

VARCHAR

支持

SMALLINT

INT|SMALLINT

支持

TEXT

TEXT

支持

TIME

TIME

支持

TIMESTAMP

TIMESTAMP

支持

TINYBLOB

BYTEA

支持

TINYINT

SMALLINT

支持

TINYTEXT

TEXT

支持

VARBINARY

BYTEA

支持

VARCHAR

VARCHAR

支持

YEAR

SMALLINT

支持

JSON

JSON

支持

GEOMETRY

-

不支持

  • DATE类型,MySQL的支持的范围是:'1000-01-01' to '9999-12-31'。

    DATETIME类型,MySQL的支持的范围是:'1000-01-01 00:00:00' to '9999-12-31 23:59:59'。

    TIMESTAMP类型,MySQL的支持的范围是:'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC。

    可参考MySQL的官方文档

    对于PostgreSQL而言,0000年,00月,00日是非法时间,DRS会转换成1970-01-01,比如MySQL的DATE类型的'0000-00-00'通过DRS会转换成'1970-01-01';比如MySQL的DATETIME类型或TIMESTAMP类型的'1000-00-31 23:59:59',通过DRS会转换成'1970-01-01 00:00:00'。

  • TIME类型,MySQL的支持的范围是:'-838:59:59' to '838:59:59',可参考MySQL的官方文档。而PostgreSQL的TIME类型的最小值:00:00:00,最大值:24:00:00。对于MySQL中小于00:00:00,或大于24:00:00的TIME类型的值,DRS会转化成 00:00:00。
  • YEAR类型,MySQL的支持的范围是:1901 to 2155, 和 0000,可参考MySQL的官方文档。由PostgreSQL中没有对应的类型,DRS会将MySQL的YEAR类型映射成SMALLINT类型。
  • 对于MySQL的DATE类型的'0000'通过DRS会转换成0。
  • 对于INT类型,如果该列含有自增属性(AUTO_INCREMENT)时,DRS同步时会将设置该属性的字段同步为SERIAL类型。

相关文档