Zuordnungen einheitlicher Typen zu Quell- und Zieldatentypen

Übersicht

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-, MySQL- oder PostgreSQL-Quelldatenbank 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 den einheitlichen Datastream-Typen

Informationen zur Zuordnung der Datentypen der verschiedenen Quellen zu BigQuery finden Sie in der Dokumentation zu BigQuery-Zielen.

Einheitliche Datastream-Typen

Typname Info Avro-Definition JSON-Definition
BOOLEAN Boolesch Boolesch Boolesch
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 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 Ganzzahl 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 Wie viele Mikrosekunden seit der Epoche, unabhängig von der Zeitzone, verstrichen sind Ein logischer Zeitstempeltyp String [ISO-8601]
TIMESTAMP WITH TIME ZONE Wie viele Mikrosekunden seit der Epoche mit einem bestimmten Zeitzonenversatz in Millisekunden vergangen sind

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 LONG. Wenn p>18 oder p=*, dann NUMBER.

NUMBER(p,s>0)

Wenn p=*, dann DECIMAL(38,s), andernfalls DECIMAL(p,s).

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) SIGNED LONG
BIGINT(size) UNSIGNED Wenn das Ziel BigQuery ist, DECIMAL; wenn es Cloud Storage ist, NUMBER
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
GEOMETRY UNSUPPORTED
INTEGER(size) SIGNED INTEGER
INTEGER(size) UNSIGNED LONG
JSON Wenn das Ziel BigQuery ist, dann JSON, bei Cloud Storage, dann 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) Wenn das Ziel BigQuery ist, INTERVAL; wenn es Cloud Storage ist, 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
  • Wenn es eine Längenbeschränkung gibt, ordnen Sie ihn VARCHAR zu.
  • Andernfalls STRING zuordnen
CHARACTER_VARYING
  • Wenn es eine Längenbeschränkung gibt, ordnen Sie den Wert VARCHAR zu.
  • Andernfalls STRING zuordnen
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
  • Wenn „precision“ = -1 und „scale“ = -1, wird NUMBER zugeordnet.
  • Andernfalls wird DECIMAL zugeordnet.
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

Nächste Schritte