概览
统一类型是指 Avro 或 JSON 事件中显示的数据类型。它们是 Datastream 专有的统一表示法,用于表示多个数据源和目标(例如源 Oracle 数据库、MySQL 数据库或 PostgreSQL 数据库,以及 BigQuery 或 Cloud Storage 目标)中的数据类型。
统一类型是所有受支持来源类型中的所有类型表示形式的超集,它们以通用但无损的方式表示原始来源类型。
下表列出了:
- 与 Datastream 关联的统一类型
- Oracle 数据库、MySQL 数据库或 PostgreSQL 数据库的数据类型与 Datastream 统一类型之间的映射
如需了解不同来源和 BigQuery 的数据类型之间的映射,请参阅 BigQuery 目标位置文档。
Datastream 统一类型
类型名称 | 信息 | Avro 定义 | JSON 定义 |
---|---|---|---|
BOOLEAN |
布尔值 | 布尔值 | 布尔值 |
BYTES |
无符号字节序列 | 字节 | 字符串 |
DATE |
自公元纪年以来的天数 | 日期逻辑类型 | 字符串 [ISO-8601] |
DATETIME |
日期(自公元纪年起算的天数)和时间(自午夜起算的微秒数) | 自定义类型 { "type": "record", "name": "datetime", "fields": [ {"name": "date", "type": "int", "logicalType": "date"}, {"name": "time", "type": "long", "logicalType": "time-micros"} ] } |
字符串 [ISO-8601] |
DECIMAL (p,s) |
任意精度的有符号十进制数 | 十进制逻辑类型 | 数字 |
DOUBLE |
64 位浮点数 | double | 数字 |
FLOAT |
32 位浮点数 | float | 数字 |
INTEGER |
32 位整数 | 整数 | 数字 |
INTERVAL |
两个事件之间的时长(以月、小时和微秒为单位) | 自定义类型 { "type": "record", "name": "interval", "fields": [ {"name": "months", "type": "int"} {"name": "hours", "type": "int"}, {"name": "micros", "type": "long"} ] } |
字符串 [ISO-8601] |
JSON |
JSON 对象 | 自定义逻辑类型 { "type": "string", "logicalType": "json" } |
嵌套 JSON |
LONG |
64 位整数 | 长整型 | 数字 |
NUMBER |
数字数据类型 | 自定义逻辑类型 { "type": "string", "logicalType": "number" } |
字符串 |
STRING |
字符串长度不受限制 | 字符串 | 字符串 |
TIME |
自午夜起经过的微秒数(不考虑时区)。 | time-micros 逻辑类型 | 字符串 [ISO-8601] |
TIME_INTERVAL |
两次事件之间经过了多少微秒 | 自定义逻辑类型 { "type": "long", "logicalType": "time-interval-micros" } |
长整型 |
TIMESTAMP |
自计时原点以来经过的微秒数(无论时区如何) | 时间戳逻辑类型 | 字符串 [ISO-8601] |
TIMESTAMP WITH TIME ZONE |
自计时原点以来经过的微秒数,具有特定时区偏移量(以毫秒为单位) | 自定义类型 { "type": "record", "name": "timestampTz", "fields": [ {"name": "timestamp", "type": "long" "logicalType": "timestamp-micros"}, {"name": "offset", "type": "int" "logicalType": "time-millis"} ] } |
字符串 [ISO-8601] |
TIME WITH TIME ZONE |
自午夜起经过的微秒数(带有特定时区偏移量) | 自定义类型 { "type": "record", "name": "timeTz", "fields": [ {"name": "time", "type": "long" "logicalType": "time-micros"}, {"name": "offset", "type": "int", "logicalType": "time-millis"} ] } |
字符串 [ISO-8601] |
UNION |
不断变化的数据类型 | 联合 | 数组 |
UNSUPPORTED |
不受支持的数据类型 | 自定义逻辑类型 { "type": "null", "logicalType": "unsupported" } |
null |
VARCHAR |
最大长度为 n 个字符的字符串 | 自定义逻辑类型 { "type": "string", "logicalType": "varchar" "length": N } |
字符串 |
将 Oracle 数据类型映射到 Datastream 统一类型
Oracle 数据类型 | Datastream 统一类型 |
---|---|
ANYDATA |
UNSUPPORTED |
BFILE |
STRING |
BINARY DOUBLE |
DOUBLE |
BINARY FLOAT |
FLOAT |
BLOB |
BYTES |
CHAR |
VARCHAR |
CLOB |
STRING |
DATE |
DATETIME
|
DOUBLE PRECISION |
DOUBLE |
FLOAT(p) |
DOUBLE |
INTERVAL DAY TO SECOND |
UNSUPPORTED |
INTERVAL YEAR TO MONTH |
UNSUPPORTED |
LONG/LONG RAW |
UNSUPPORTED |
NCHAR |
STRING |
NCLOB |
STRING |
NUMBER |
NUMBER |
NUMBER(p,s<=0) |
如果 p<=18,则为 |
NUMBER(p,s>0) |
如果 p= |
NVARCHAR2 |
STRING |
RAW |
STRING |
ROWID |
STRING |
SDO_GEOMETRY |
UNSUPPORTED |
SMALLINT |
INTEGER |
TIMESTAMP |
TIMESTAMP
|
TIMESTAMP WITH TIME ZONE |
TIMESTAMP WITH TIME ZONE
|
UDT (用户定义的类型) |
UNSUPPORTED |
UROWID |
UNSUPPORTED |
VARCHAR |
VARCHAR |
VARCHAR2 |
VARCHAR |
XMLTYPE |
UNSUPPORTED |
将 MySQL 数据类型映射到 Datastream 统一类型
MySQL 数据类型 | Datastream 统一类型 |
---|---|
BIGINT(size) SIGNED |
LONG |
BIGINT(size) UNSIGNED |
如果目标位置是 BigQuery,则为 DECIMAL ;如果是 Cloud Storage,则为 NUMBER |
BINARY(size) |
STRING (hex encoded) |
BIT(size) |
LONG |
BLOB(size) |
STRING (hex encoded) |
BOOL |
INTEGER |
CHAR(size) |
STRING |
DATE |
如果目标位置是 BigQuery,则为 DATE ;如果是 Cloud Storage,则为 TIMESTAMP |
DATETIME(fsp) |
如果目标位置是 BigQuery,则 DATETIME ;如果目标位置是 Cloud Storage,则 TIMESTAMP |
DECIMAL(size, d) |
DECIMAL(size, d) |
DOUBLE(size, d) |
DOUBLE |
ENUM(val1, val2, val3, ...) |
STRING |
FLOAT(p) |
FLOAT |
FLOAT(size, d) |
FLOAT |
GEOMETRY |
UNSUPPORTED |
INTEGER(size) SIGNED |
INTEGER |
INTEGER(size) UNSIGNED |
LONG |
JSON |
如果目标位置是 BigQuery,则为 JSON ;如果是 Cloud Storage,则为 STRING
|
LONGBLOB |
STRING (hex encoded) |
LONGTEXT |
STRING |
MEDIUMBLOB |
STRING (hex encoded) |
MEDIUMINT(size) |
INTEGER |
MEDIUMTEXT |
STRING |
SET(val1, val2, val3, ...) |
STRING |
SMALLINT(size) |
INTEGER |
TEXT(size) |
STRING |
TIME(fsp) |
如果目标位置是 BigQuery,则为 INTERVAL ;如果是 Cloud Storage,则为 TIME_INTERVAL |
TIMESTAMP(fsp) |
TIMESTAMP |
TINYBLOB |
STRING (hex encoded) |
TINYINT(size) |
INTEGER |
TINYTEXT |
STRING |
VARBINARY(size) |
STRING (hex encoded) |
VARCHAR |
STRING |
YEAR |
INTEGER |
将 PostgreSQL 数据类型映射到 Datastream 统一类型
PostgreSQL 数据类型 | Datastream 统一类型 |
---|---|
ARRAY |
JSON
|
BIGINT |
LONG |
BIT |
BYTES |
BIT_VARYING |
BYTES |
BOOLEAN |
BOOLEAN |
BOX |
UNSUPPORTED |
BYTEA |
BYTES |
CHARACTER |
|
CHARACTER_VARYING |
|
CIDR |
STRING |
CIRCLE |
UNSUPPORTED |
CITEXT |
STRING |
DATE |
DATE |
DOUBLE_PRECISION |
DOUBLE |
ENUM |
STRING |
INET |
STRING |
INTEGER |
INTEGER |
INTERVAL |
INTERVAL |
JSON |
JSON |
JSONB |
JSON |
LINE |
UNSUPPORTED |
LSEG |
UNSUPPORTED |
MACADDR |
STRING |
MONEY |
DOUBLE |
NUMERIC |
|
OID |
LONG |
PATH |
UNSUPPORTED |
POINT |
UNSUPPORTED |
POLYGON |
UNSUPPORTED |
REAL |
FLOAT |
SMALLINT |
INTEGER |
SMALLSERIAL |
INTEGER |
SERIAL |
INTEGER |
TEXT |
STRING |
TIME |
TIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP_WITH_TIMEZONE |
TIMESTAMP_WITH_TIMEZONE |
TIME_WITH_TIMEZONE |
TIME_WITH_TIMEZONE |
TSQUERY |
STRING |
TSVECTOR |
STRING |
TXID_SNAPSHOT |
STRING |
UUID |
STRING |
XML |
STRING |
将 SQL Server 数据类型映射到 Datastream 统一类型
SQL Server 数据类型 | Datastream 统一类型 |
---|---|
BIGINT |
LONG |
BINARY |
BYTES |
BIT |
BOOLEAN |
CHAR |
STRING |
DATE |
DATE |
DATETIME2 |
DATETIME |
DATETIME |
DATETIME |
DATETIMEOFFSET |
TIMESTAMP WITH TIMEZONE |
DECIMAL |
DECIMAL (p, s) |
FLOAT |
DOUBLE |
HIERARCHYID |
STRING |
INT |
INTEGER |
IMAGE |
BYTES |
MONEY |
DECIMAL |
NCHAR |
STRING |
NVARCHAR |
STRING |
NVARCHAR(MAX) |
STRING |
NTEXT |
STRING |
NUMERIC |
DECIMAL (p, s) |
REAL |
FLOAT |
SMALLDATETIME |
DATETIME |
SMALLINT |
INTEGER |
SMALLMONEY |
DECIMAL |
TEXT |
STRING |
TINYINT |
INTEGER |
TIME |
TIME |
TIMESTAMP/ROWVERSION |
BYTES |
UNIQUEIDENTIFIER |
STRING |
VARCHAR |
STRING |
VARCHAR(MAX) |
STRING |
VARBINARY |
BYTES |
VARBINARY(MAX) |
BYTES |
XML |
STRING |
后续步骤
- 如需详细了解如何配置 Oracle 来源,请参阅配置源 Oracle 数据库。
- 如需详细了解如何配置 MySQL 源,请参阅配置源 MySQL 数据库。
- 如需详细了解如何配置 PostgreSQL 源数据库,请参阅配置源 PostgreSQL 数据库。
- 如需详细了解如何配置 SQL Server 源,请参阅配置源 SQL Server 数据库。