Ü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-Datenbank oder eine PostgreSQL-Datenbank und 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, eine MySQL-Datenbank oder eine PostgreSQL-Datenbank und die einheitlichen Datastream-Typen
In der Dokumentation zum BigQuery-Ziel finden Sie Informationen zu den Zuordnungen zwischen den Datentypen für die verschiedenen Quellen und BigQuery.
Einheitliche Datastream-Typen
Typname | Info | Avro-Definition | JSON-Definition |
---|---|---|---|
BOOLEAN |
boolean | boolean | boolean |
BYTES |
Eine Folge nicht signierter Byte | Byte | String |
DATE |
Tage seit der Epoche | Logischer Datumstyp | String [ISO-8601] |
DATETIME |
Das Datum (in Tagen seit der Epoche) und die Zeit (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 |
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 |
Die Anzahl der seit Mitternacht verstrichenen Mikrosekunden, unabhängig von der Zeitzone. | Logischer Typ „time-micros“ | String [ISO-8601] |
TIME_INTERVAL |
Anzahl der zwischen zwei Ereignissen verstrichenen Mikrosekunden | Ein benutzerdefinierter logischer Typ { "type": "long", "logicalType": "time-interval-micros" } |
long |
TIMESTAMP |
Anzahl der Mikrosekunden seit der Epoche, unabhängig von der Zeitzone | Ein logischer Zeitstempeltyp | String [ISO-8601] |
TIMESTAMP WITH TIME ZONE |
Anzahl der seit der Epoche mit einem bestimmten Zeitzonenversatz verstrichenen Mikrosekunden 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 |
Die Anzahl an Mikrosekunden, die seit Mitternacht mit einem bestimmten Zeitzonenversatz verstrichen sind | 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) |
Falls signiert, dann LONG , falls nicht signiert, dann DECIMAL für BigQuery und NUMBER für Cloud Storage-Ziele |
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) |
Wenn das Ziel BigQuery ist, dann DATETIME , bei Cloud Storage, dann TIMESTAMP |
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 |
Wenn das Ziel BigQuery ist, dann JSON , bei Cloud Storage, dann STRING
|
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) |
Wenn das Ziel BigQuery ist, dann INTERVAL , bei Cloud Storage, dann TIME_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 |