Mapeamentos de tipos unificados para tipos de dados de origem e destino

Os tipos unificados são os tipos de dados que aparecem nos eventos Avro ou JSON. Eles são uma representação unificada e específica do Datastream de um tipo de dados em várias origens e destinos, como um banco de dados Oracle, MySQL ou PostgreSQL de origem e um destino do BigQuery ou do Cloud Storage.

Os tipos unificados são o superconjunto de todas as representações de tipos compatíveis, que representam o tipo de origem original de maneira genérica, mas sem perdas.

A tabela a seguir lista:

  • Os tipos unificados associados ao Datastream
  • Os mapeamentos entre os tipos de dados de um banco de dados Oracle, MySQL ou PostgreSQL e os tipos unificados do Datastream

Consulte a documentação do destino do BigQuery para informações sobre os mapeamentos entre os tipos de dados das diferentes origens e o BigQuery.

Tipos unificados de fluxo de dados

Nome do tipo Informações Definição do Avro Definição de JSON
BOOLEAN boolean boolean boolean
BYTES Uma sequência de bytes não assinados bytes string
DATE Dias desde a Era Unix Um tipo lógico de data String (ISO 8601)
DATETIME A data (em dias desde a época) e a hora (em microssegundos desde a meia-noite)

Um tipo personalizado

{
  "type": "record",
  "name": "datetime",
  "fields": [
    {"name": "date",
     "type": "int",
     "logicalType": "date"},
    {"name": "time",
     "type": "long",
     "logicalType": "time-micros"}
  ]
}
    
String (ISO 8601)
DECIMAL (p,s) Um número decimal com precisão arbitrária Um tipo lógico decimal número
DOUBLE números de ponto flutuante de 64 bits duplo número
FLOAT números de ponto flutuante de 32 bits float número
INTEGER Um número inteiro de 64 bits int número
INTERVAL Duração entre dois eventos (em meses, horas e microssegundos)

Um tipo personalizado

{
  "type": "record",
  "name": "interval",
  "fields": [
    {"name": "months",
     "type": "int"}
    {"name": "hours",
     "type": "int"},
    {"name": "micros",
     "type": "long"}
  ]
}
    
String (ISO 8601)
JSON Um objeto JSON

Um tipo lógico personalizado

{
  "type": "string",
  "logicalType": "json"
}
JSON aninhado
LONG Um número inteiro de 64 bits long número
NUMBER Um tipo de dados numéricos

Um tipo lógico personalizado

{
  "type": "string",
  "logicalType": "number"
}
string
STRING Um comprimento de string ilimitado string string
TIME Quantos microssegundos se passaram desde a meia-noite, independente do fuso horário. Um tipo lógico de micros de tempo String (ISO 8601)
TIME_INTERVAL Quantos microssegundos se passaram entre dois eventos

Um tipo lógico personalizado

{
  "type": "long",
  "logicalType": "time-interval-micros"
}
long
TIMESTAMP Quantos microssegundos se passaram desde a época, independentemente do fuso horário Um tipo lógico de carimbo de data/hora String (ISO 8601)
TIMESTAMP WITH TIME ZONE Quantos microssegundos se passaram desde a época com uma diferença de fuso horário específica em milissegundos

Um tipo personalizado

{
  "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 Quantos microssegundos se passaram desde a meia-noite com uma diferença de fuso horário específica

Um tipo personalizado

{
  "type": "record",
  "name": "timeTz",
  "fields": [
    {"name": "time",
     "type": "long"
     "logicalType": "time-micros"},
    {"name": "offset",
     "type": "int",
     "logicalType": "time-millis"}
  ]
}
    
String (ISO 8601)
UNION Um tipo de dados variável. União matriz
UNSUPPORTED Um tipo de dados não compatível

Um tipo lógico personalizado

{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR Uma string com comprimento máximo de n caracteres.

Um tipo lógico personalizado

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

Mapear tipos de dados Oracle para tipos unificados do Datastream

Tipo de dados Oracle Tipo unificado do 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, então LONG. Se p>18 ou p=*, então NUMBER.

NUMBER(p,s>0)

Se p=*, em seguida, DECIMAL(38,s), caso contrário 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 definido pelo usuário) UNSUPPORTED
UROWID UNSUPPORTED
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE UNSUPPORTED

Mapear tipos de dados MySQL para tipos unificados do Datastream

Tipo de dados do MySQL Tipo unificado do Datastream
BIGINT(size) SIGNED LONG
BIGINT(size) UNSIGNED Se o destino for o BigQuery, DECIMAL. Se for o Cloud Storage, NUMBER.
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE Se o destino for o BigQuery, DATE. Se for o Cloud Storage, TIMESTAMP.
DATETIME(fsp) Se o destino for o BigQuery, DATETIME. Se for o 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 o destino for o BigQuery, use JSON. Se for o Cloud Storage, use 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 o destino for o BigQuery, INTERVAL. Se for o 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

Mapear tipos de dados PostgreSQL para tipos unificados do Datastream

Tipo de dados do PostgreSQL Tipo unificado do Datastream
ARRAY JSON
BIGINT LONG
BIT BYTES
BIT_VARYING BYTES
BOOLEAN BOOLEAN
BOX UNSUPPORTED
BYTEA BYTES
CHARACTER
  • Se houver um limite de comprimento, mapeie para VARCHAR.
  • Caso contrário, mapeie para STRING
CHARACTER_VARYING
  • Se houver um limite de comprimento, mapeie para VARCHAR.
  • Caso contrário, mapeie para 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 precisão = -1 e escala = -1, mapeie para NUMBER
  • Caso contrário, mapeie para 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
XID STRING
XID8 STRING
XML STRING

Mapear tipos de dados do SQL Server para tipos unificados do Datastream

Tipo de dados do SQL Server Tipo unificado do 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

A seguir