Mappages de types unifiés avec les types de données sources 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 pour plusieurs sources de données et destinations, telles qu'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 la destination 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 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 int 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 de micro-micros-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 de fuseau horaire spécifique

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) Si la signature est signée, LONG si elle n'est pas signée, DECIMAL
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. Si Cloud Storage, alors 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 Les types de données
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

Mapper les types de données PostgreSQL sur 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, mapper sur VARCHAR
  • Sinon, mapper à STRING
CHARACTER_VARYING
  • Si la longueur est limitée, mapper sur VARCHAR
  • Sinon, mapper à 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 que l'échelle est égale à -1, mettre en correspondance avec NUMBER
  • Sinon, mapper à 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 sur les 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