Mappature dei tipi unificati ai tipi di dati di origine e di destinazione

I tipi unificati sono i tipi di dati visualizzati negli eventi Avro o JSON. Si tratta di una rappresentazione unificata e specifica di Datastream di un tipo di dati in più origini dati e destinazioni, ad esempio un database Oracle, MySQL o PostgreSQL di origine e una destinazione BigQuery o Cloud Storage.

I tipi unificati sono il superset di tutte le rappresentazioni di tipo in tutti i tipi di origine supportati, che rappresentano il tipo di origine originale in modo generico, ma senza perdita di dati.

Le tabelle seguenti elencano:

  • I tipi unificati associati a Datastream
  • Le mappature tra i tipi di dati di un database Oracle, un database MySQL o un database PostgreSQL e i tipi unificati di Datastream

Consulta la documentazione relativa alle destinazioni BigQuery per informazioni sulle mappature tra i tipi di dati delle diverse origini e BigQuery.

Tipi unificati di Datastream

Nome del tipo Informazioni Definizione Avro Definizione JSON
BOOLEAN boolean boolean boolean
BYTES Una sequenza di byte non firmati byte string
DATE Giorni dall'epoca Un tipo logico di data stringa [ISO-8601]
DATETIME La data (in giorni dall'epoca) e l'ora (in microsecondi da mezzanotte)

Un tipo personalizzato

{
  "type": "record",
  "name": "datetime",
  "fields": [
    {"name": "date",
     "type": "int",
     "logicalType": "date"},
    {"name": "time",
     "type": "long",
     "logicalType": "time-micros"}
  ]
}
    
stringa [ISO-8601]
DECIMAL (p,s) Un numero decimale con segno di precisione arbitraria Un tipo logico decimale numero
DOUBLE Numeri in virgola mobile a 64 bit double numero
FLOAT Numeri in virgola mobile a 32 bit float numero
INTEGER Un numero intero a 32 bit int numero
INTERVAL Durata tra due eventi (in mesi, ore e microsecondi)

Un tipo personalizzato

{
  "type": "record",
  "name": "interval",
  "fields": [
    {"name": "months",
     "type": "int"}
    {"name": "hours",
     "type": "int"},
    {"name": "micros",
     "type": "long"}
  ]
}
    
stringa [ISO-8601]
JSON Un oggetto JSON

Un tipo logico personalizzato

{
  "type": "string",
  "logicalType": "json"
}
JSON nidificato
LONG Un numero intero a 64 bit Lungo numero
NUMBER Un tipo di dati numerico

Un tipo logico personalizzato

{
  "type": "string",
  "logicalType": "number"
}
string
STRING Una stringa di lunghezza illimitata string string
TIME Il numero di microsecondi trascorsi da mezzanotte, indipendentemente dal fuso orario. Un tipo logico time-micros stringa [ISO-8601]
TIME_INTERVAL Il numero di microsecondi trascorsi tra due eventi

Un tipo logico personalizzato

{
  "type": "long",
  "logicalType": "time-interval-micros"
}
Lungo
TIMESTAMP Numero di microsecondi trascorsi dall'epoca, indipendentemente dal fuso orario Un tipo logico timestamp stringa [ISO-8601]
TIMESTAMP WITH TIME ZONE Il numero di microsecondi trascorsi dall'epoca con un offset del fuso orario specifico in millisecondi

Un tipo personalizzato

{
  "type": "record",
  "name": "timestampTz",
  "fields": [
    {"name": "timestamp",
     "type": "long"
     "logicalType": "timestamp-micros"},
    {"name": "offset",
     "type": "int"
     "logicalType": "time-millis"}
  ]
}
    
stringa [ISO-8601]
TIME WITH TIME ZONE Il numero di microsecondi trascorsi da mezzanotte con un offset del fuso orario specifico

Un tipo personalizzato

{
  "type": "record",
  "name": "timeTz",
  "fields": [
    {"name": "time",
     "type": "long"
     "logicalType": "time-micros"},
    {"name": "offset",
     "type": "int",
     "logicalType": "time-millis"}
  ]
}
    
stringa [ISO-8601]
UNION Un tipo di dati variabile Union matrice
UNSUPPORTED Un tipo di dati non supportato

Un tipo logico personalizzato

{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR Una stringa con una lunghezza massima di n caratteri

Un tipo logico personalizzato

{
  "type": "string",
  "logicalType": "varchar"
  "length": N
}
string

Mappa i tipi di dati Oracle ai tipi unificati di Datastream

Tipo di dati Oracle Tipo unificato di 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)

Se p<=18, allora LONG. Se p>18 o p=*, allora NUMBER.

NUMBER(p,s>0)

Se p=*, allora DECIMAL(38,s), altrimenti 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 (tipo definito dall'utente) UNSUPPORTED
UROWID UNSUPPORTED
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE UNSUPPORTED

Mappa i tipi di dati MySQL ai tipi unificati di Datastream

Tipo di dati MySQL Tipo unificato di Datastream
BIGINT(size) SIGNED LONG
BIGINT(size) UNSIGNED Se la destinazione è BigQuery, DECIMAL, se Cloud Storage, NUMBER
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE Se la destinazione è BigQuery, DATE, se Cloud Storage, TIMESTAMP
DATETIME(fsp) Se la destinazione è BigQuery, DATETIME, se Cloud Storage, 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 Se la destinazione è BigQuery, JSON, se Cloud Storage, 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) Se la destinazione è BigQuery, INTERVAL, se Cloud Storage, TIME_INTERVAL
TIMESTAMP(fsp) TIMESTAMP
TINYBLOB STRING (hex encoded)
TINYINT(size) INTEGER
TINYTEXT STRING
VARBINARY(size) STRING (hex encoded)
VARCHAR STRING
YEAR INTEGER

Mappa i tipi di dati PostgreSQL ai tipi unificati di Datastream

Tipo di dati PostgreSQL Tipo unificato di Datastream
ARRAY JSON
BIGINT LONG
BIT BYTES
BIT_VARYING BYTES
BOOLEAN BOOLEAN
BOX UNSUPPORTED
BYTEA BYTES
CHARACTER
  • Se esiste un limite di lunghezza, mappalo a VARCHAR
  • In caso contrario, mappa a STRING
CHARACTER_VARYING
  • Se esiste un limite di lunghezza, mappalo a VARCHAR
  • In caso contrario, mappa a 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
  • Se precisione = -1 e scala = -1, mappa a NUMBER
  • In caso contrario, mappa a 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

Mappa i tipi di dati di SQL Server ai tipi unificati di Datastream

Tipo di dati SQL Server Tipo unificato di 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
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

Passaggi successivi