Überblick
Einheitliche Typen sind die Datentypen, die in den Avro- oder JSON-Ereignissen angezeigt werden. Sie sind eine Datastream-spezifische, einheitliche Darstellung eines Datentyps über mehrere Datenquellen und Ziele hinweg, z. B. eine Oracle-Quelldatenbank, eine MySQL- oder PostgreSQL-Datenbank sowie ein BigQuery- oder Cloud Storage-Ziel.
Bei den einheitlichen Typen handelt es sich um die Obermenge aller Typdarstellungen für alle unterstützten Quelltypen, die den ursprünglichen Quelltyp in allgemeiner, aber verlustfreier Weise darstellen.
In den folgenden Tabellen ist Folgendes aufgeführt:
- Die mit Datastream verknüpften einheitlichen Typen
- Die Zuordnungen zwischen den Datentypen für eine Oracle-Datenbank, einer MySQL-Datenbank oder einer PostgreSQL-Datenbank und den einheitlichen Datastream-Typen
Informationen zu den Zuordnungen zwischen den Datentypen für die verschiedenen Quellen und BigQuery finden Sie in der Dokumentation zum BigQuery-Ziel.
Einheitliche Datastream-Typen
Typname | Info | Avro-Definition | JSON-Definition |
---|---|---|---|
BOOLEAN |
boolean | boolean | boolean |
BYTES |
Eine Folge nicht signierter Byte | Byte | String |
DATE |
Tage seit Epoche | Ein logischer Datumstyp | String [ISO-8601] |
DATETIME |
Das Datum (in Tagen seit der Epoche) und die Uhrzeit (in Mikrosekunden seit Mitternacht) | Ein benutzerdefinierter Typ { "type": "record", "name": "datetime", "fields": [ {"name": "date", "type": "int", "logicalType": "date"}, {"name": "time", "type": "long", "logicalType": "time-micros"} ] } |
String [ISO-8601] |
DECIMAL (p,s) |
Vorzeichenbehaftete Dezimalzahl mit beliebiger Genauigkeit | Ein logischer Dezimaltyp | Zahl |
DOUBLE |
64-Bit-Gleitkommazahlen | double | Zahl |
FLOAT |
32-Bit-Gleitkommazahlen | float | Zahl |
INTEGER |
Eine 32-Bit-Ganzzahl | int | Zahl |
INTERVAL |
Dauer zwischen zwei Ereignissen (in Monaten, Stunden und Mikrosekunden) | Ein benutzerdefinierter Typ { "type": "record", "name": "interval", "fields": [ {"name": "months", "type": "int"} {"name": "hours", "type": "int"}, {"name": "micros", "type": "long"} ] } |
String [ISO-8601] |
JSON |
Ein JSON-Objekt | Ein benutzerdefinierter logischer Typ { "type": "string", "logicalType": "json" } |
verschachteltes JSON-Format |
LONG |
Eine 64-Bit-Ganzzahl | long | Zahl |
NUMBER |
Ein numerischer Datentyp | Ein benutzerdefinierter logischer Typ { "type": "string", "logicalType": "number" } |
String |
STRING |
Eine unbegrenzte Stringlänge | String | String |
TIME |
Gibt an, wie viele Mikrosekunden seit Mitternacht vergangen sind, unabhängig von der Zeitzone. | Ein logischer Typ „Zeit-Mikros“ | String [ISO-8601] |
TIME_INTERVAL |
Anzahl der zwischen zwei Ereignissen verstrichenen Mikrosekunden | Ein benutzerdefinierter logischer Typ { "type": "long", "logicalType": "time-interval-micros" } |
long |
TIMESTAMP |
Wie viele Mikrosekunden seit der Epoche vergangen sind, unabhängig von der Zeitzone | Ein logischer Zeitstempeltyp | String [ISO-8601] |
TIMESTAMP WITH TIME ZONE |
Seit der Epoche verstrichene Mikrosekunden mit einer bestimmten Zeitzonenverschiebung in Millisekunden | Ein benutzerdefinierter Typ { "type": "record", "name": "timestampTz", "fields": [ {"name": "timestamp", "type": "long" "logicalType": "timestamp-micros"}, {"name": "offset", "type": "int" "logicalType": "time-millis"} ] } |
String [ISO-8601] |
TIME WITH TIME ZONE |
Seit Mitternacht verstrichene Mikrosekunden mit einer bestimmten Zeitzonenverschiebung | Ein benutzerdefinierter Typ { "type": "record", "name": "timeTz", "fields": [ {"name": "time", "type": "long" "logicalType": "time-micros"}, {"name": "offset", "type": "int", "logicalType": "time-millis"} ] } |
String [ISO-8601] |
UNION |
Ein variierender Datentyp | Union | array |
UNSUPPORTED |
Ein nicht unterstützter Datentyp | Ein benutzerdefinierter logischer Typ { "type": "null", "logicalType": "unsupported" } |
null |
VARCHAR |
Ein String mit einer maximalen Länge von n Zeichen | Ein benutzerdefinierter logischer Typ { "type": "string", "logicalType": "varchar" "length": N } |
String |
Oracle-Datentypen den einheitlichen Datastream-Typen zuordnen
Oracle-Datentyp | Einheitlicher Datastream-Typ |
---|---|
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) |
Wenn p<=18, dann |
NUMBER(p,s>0) |
Wenn p= |
NVARCHAR2 |
STRING |
RAW |
STRING |
ROWID |
STRING |
SDO_GEOMETRY |
UNSUPPORTED |
SMALLINT |
INTEGER |
TIMESTAMP |
TIMESTAMP
|
TIMESTAMP WITH TIME ZONE |
TIMESTAMP WITH TIME ZONE
|
UDT (benutzerdefinierter Typ) |
UNSUPPORTED |
UROWID |
UNSUPPORTED |
VARCHAR |
VARCHAR |
VARCHAR2 |
VARCHAR |
XMLTYPE |
UNSUPPORTED |
MySQL-Datentypen zu einheitlichen Datastream-Typen zuordnen
MySQL-Datentyp | Einheitlicher Datastream-Typ |
---|---|
BIGINT(size) |
Wenn signiert, dann LONG , wenn nicht signiert, dann DECIMAL |
BINARY(size) |
STRING (hex encoded) |
BIT(size) |
LONG |
BLOB(size) |
STRING (hex encoded) |
BOOL |
INTEGER |
CHAR(size) |
STRING |
DATE |
Wenn das Ziel BigQuery ist, dann DATE , bei Cloud Storage, dann TIMESTAMP |
DATETIME(fsp) |
DATETIME |
DECIMAL(size, d) |
DECIMAL(size, d) |
DOUBLE(size, d) |
DOUBLE |
ENUM(val1, val2, val3, ...) |
STRING |
FLOAT(p) |
FLOAT |
FLOAT(size, d) |
FLOAT |
INTEGER(size) |
INTEGER |
JSON |
JSON
|
LONGBLOB |
STRING (hex encoded) |
LONGTEXT |
STRING (hex encoded) |
MEDIUMBLOB |
STRING (hex encoded) |
MEDIUMINT(size) |
INTEGER |
MEDIUMTEXT |
STRING |
SET(val1, val2, val3, ...) |
STRING |
SMALLINT(size) |
INTEGER |
TEXT(size) |
STRING |
TIME(fsp) |
INTERVAL |
TIMESTAMP(fsp) |
TIMESTAMP |
TINYBLOB |
STRING (hex encoded) |
TINYINT(size) |
INTEGER |
TINYTEXT |
STRING |
VARBINARY(size) |
STRING (hex encoded) |
VARCHAR |
STRING |
YEAR |
INTEGER |
PostgreSQL-Datentypen zu einheitlichen Datastream-Typen zuordnen
PostgreSQL-Datentyp | Einheitlicher Datastream-Typ |
---|---|
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-Datentypen zu einheitlichen Datastream-Typen zuordnen
SQL Server-Datentyp | Einheitlicher Datastream-Typ |
---|---|
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 |