Mappages de types unifiés avec les types de données source et de destination

Présentation

Les types unifiés sont les types de données qui apparaissent dans les événements Avro ou JSON. Il s'agit d'une représentation unifiée spécifique à Datastream d'un type de données dans plusieurs sources et destinations de données, par exemple une base de données Oracle source, une base de données MySQL ou une base de données PostgreSQL, et une destination BigQuery ou Cloud Storage.

Les types unifiés constituent le sur-ensemble de toutes les représentations de types de tous les types de sources acceptés. Ils représentent le type de source d'origine de manière générique, mais sans perte.

Les tableaux suivants répertorient :

  • Les types unifiés associés à Datastream.
  • Mappages entre les types de données d'une base de données Oracle, d'une base de données MySQL ou d'une base de données PostgreSQL, et les types unifiés Datastream

Consultez la documentation sur les destinations BigQuery pour en savoir plus sur les mappages entre les types de données pour les différentes sources et BigQuery.

Types unifiés Datastream

Nom du type Infos Définition Avro Définition JSON
BOOLEAN boolean boolean boolean
BYTES Une séquence d'octets non signés bytes chaîne
DATE Jours écoulés depuis l'epoch Un type logique de date Chaîne (ISO 8601)
DATETIME Date (en jours depuis l'epoch) et heure (en microsecondes depuis minuit)

Un type personnalisé

{
  "type": "record",
  "name": "datetime",
  "fields": [
    {"name": "date",
     "type": "int",
     "logicalType": "date"},
    {"name": "time",
     "type": "long",
     "logicalType": "time-micros"}
  ]
}
    
Chaîne (ISO 8601)
DECIMAL (p,s) Nombre décimal signé de précision arbitraire Un type logique décimal nombre
DOUBLE Nombres à virgule flottante de 64 bits double nombre
FLOAT Nombres à virgule flottante de 32 bits float nombre
INTEGER Un entier de 32 bits entier Nombre
INTERVAL Durée entre deux événements (en mois, heures et microsecondes)

Un type personnalisé

{
  "type": "record",
  "name": "interval",
  "fields": [
    {"name": "months",
     "type": "int"}
    {"name": "hours",
     "type": "int"},
    {"name": "micros",
     "type": "long"}
  ]
}
    
Chaîne (ISO 8601)
JSON Un objet JSON

Un type logique personnalisé

{
  "type": "string",
  "logicalType": "json"
}
JSON imbriqué
LONG Un entier de 64 bits long nombre
NUMBER Un type de données numériques

Un type logique personnalisé

{
  "type": "string",
  "logicalType": "number"
}
chaîne
STRING Une longueur de chaîne illimitée chaîne chaîne
TIME Nombre de microsecondes écoulées depuis minuit, quel que soit le fuseau horaire. Un type logique time-micros Chaîne (ISO 8601)
TIME_INTERVAL Nombre de microsecondes écoulées entre deux événements

Un type logique personnalisé

{
  "type": "long",
  "logicalType": "time-interval-micros"
}
long
TIMESTAMP Nombre de microsecondes écoulées depuis l'epoch, quel que soit le fuseau horaire Un type logique d'horodatage Chaîne (ISO 8601)
TIMESTAMP WITH TIME ZONE Nombre de microsecondes écoulées depuis l'epoch avec un décalage horaire spécifique en millisecondes

Un type personnalisé

{
  "type": "record",
  "name": "timestampTz",
  "fields": [
    {"name": "timestamp",
     "type": "long"
     "logicalType": "timestamp-micros"},
    {"name": "offset",
     "type": "int"
     "logicalType": "time-millis"}
  ]
}
    
Chaîne (ISO 8601)
TIME WITH TIME ZONE Nombre de microsecondes écoulées depuis minuit, avec un décalage horaire spécifique au fuseau horaire

Un type personnalisé

{
  "type": "record",
  "name": "timeTz",
  "fields": [
    {"name": "time",
     "type": "long"
     "logicalType": "time-micros"},
    {"name": "offset",
     "type": "int",
     "logicalType": "time-millis"}
  ]
}
    
Chaîne (ISO 8601)
UNION Un type de données variable Union tableau
UNSUPPORTED Un type de données non compatible

Un type logique personnalisé

{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR Une chaîne d'une longueur maximale de n caractères

Un type logique personnalisé

{
  "type": "string",
  "logicalType": "varchar"
  "length": N
}
chaîne

Mapper les types de données Oracle aux types unifiés Datastream

Type de donnée Oracle Type unifié 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)

Si p<=18, alors LONG. Si p>18 ou p=*, alors NUMBER.

NUMBER(p,s>0)

Si p=*, alors DECIMAL(38,s), sinon 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 (type défini par l'utilisateur) UNSUPPORTED
UROWID UNSUPPORTED
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE UNSUPPORTED

Mapper les types de données MySQL aux types unifiés Datastream

Type de donnée MySQL Type unifié Datastream
BIGINT(size) SIGNED LONG
BIGINT(size) UNSIGNED Si la destination est BigQuery, utilisez DECIMAL. Si elle est Cloud Storage, utilisez NUMBER.
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE Si la destination est BigQuery, DATE, s'il s'agit de Cloud Storage, alors TIMESTAMP
DATETIME(fsp) Si la destination est BigQuery, utilisez DATETIME. Si elle est Cloud Storage, utilisez 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 Si la destination est BigQuery, JSON, s'il s'agit de Cloud Storage, alors 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) Si la destination est BigQuery, utilisez INTERVAL. Si elle est Cloud Storage, utilisez TIME_INTERVAL.
TIMESTAMP(fsp) TIMESTAMP
TINYBLOB STRING (hex encoded)
TINYINT(size) INTEGER
TINYTEXT STRING
VARBINARY(size) STRING (hex encoded)
VARCHAR STRING
YEAR INTEGER

Mapper les types de données PostgreSQL avec les types unifiés Datastream

Type de données PostgreSQL Type unifié Datastream
ARRAY JSON
BIGINT LONG
BIT BYTES
BIT_VARYING BYTES
BOOLEAN BOOLEAN
BOX UNSUPPORTED
BYTEA BYTES
CHARACTER
  • Si la longueur est limitée, mappez-la sur VARCHAR.
  • Sinon, mappez à STRING
CHARACTER_VARYING
  • Si la longueur est limitée, mappez à VARCHAR.
  • Sinon, mappez sur STRING
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
  • Si la précision est égale à -1 et l'échelle à -1, le mappage sur NUMBER est effectué.
  • Sinon, mappez sur DECIMAL
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

Mapper les types de données SQL Server aux types unifiés Datastream

Type de données SQL Server Type unifié 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

Étape suivante