Zuordnungen einheitlicher Typen zu Quell- und Zieldatentypen

Ü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 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) 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
  • Wenn es eine Längenbeschränkung gibt, ordnen Sie sie VARCHAR zu.
  • Ordnen Sie andernfalls STRING zu.
CHARACTER_VARYING
  • Wenn es eine Längenbeschränkung gibt, ordnen Sie sie VARCHAR zu.
  • Ordnen Sie andernfalls STRING zu.
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 Skalierung = -1, dann NUMBER zuordnen
  • Ordnen Sie andernfalls DECIMAL zu.
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