소스 및 대상 데이터 유형에 대한 통합 유형의 매핑

개요

통합 유형은 Avro 또는 JSON 이벤트에 표시되는 데이터 유형입니다. 이것들은 소스 Oracle 데이터베이스, MySQL 데이터베이스, PostgreSQL 데이터베이스, BigQuery 또는 Cloud Storage 대상과 같이 여러 데이터 소스와 대상 사이에 통합적으로 표현된 Datastream과 관련된 데이터 유형입니다.

통합 유형은 모든 지원되는 소스 유형 간의 모든 유형 표현의 상위 집합이며, 일반적이지만 손실이 없는 방식으로 원래 소스 유형을 표현합니다.

아래 표에는 다음 항목이 나열됩니다.

  • Datastream과 연관된 통합 유형
  • Oracle 데이터베이스, MySQL 데이터베이스, PostgreSQL 데이터베이스의 데이터 유형과 Datastream 통합 유형 간의 매핑

다른 소스의 데이터 유형과 BigQuery 사이의 매핑에 대한 정보는 BigQuery 대상 문서를 참조하세요.

Datastream 통합 유형

유형 이름 정보 Avro 정의 JSON 정의
BOOLEAN 부울 부울 부울
BYTES 부호 없는 바이트 시퀀스 바이트 문자열
DATE 에포크 이후 경과 일수 날짜 논리 유형 문자열[ISO-8601]
DATETIME 날짜(에포크 이후 경과 일수) 및 시간(자정 이후의 마이크로초 수)

커스텀 유형

{
  "type": "record",
  "name": "datetime",
  "fields": [
    {"name": "date",
     "type": "int",
     "logicalType": "date"},
    {"name": "time",
     "type": "long",
     "logicalType": "time-micros"}
  ]
}
    
문자열[ISO-8601]
DECIMAL (p,s) 임의 정밀도의 부호 있는 십진수 숫자 십진수 논리 유형 숫자
DOUBLE 64비트 부동 소수점 숫자 double 숫자
FLOAT 32비트 부동 소수점 숫자 float 숫자
INTEGER 32비트 정수 int 숫자
INTERVAL 두 이벤트 간의 기간(개월, 시간, 마이크로초)

커스텀 유형

{
  "type": "record",
  "name": "interval",
  "fields": [
    {"name": "months",
     "type": "int"}
    {"name": "hours",
     "type": "int"},
    {"name": "micros",
     "type": "long"}
  ]
}
    
문자열[ISO-8601]
JSON JSON 객체

커스텀 논리 유형

{
  "type": "string",
  "logicalType": "json"
}
중첩 JSON
LONG 64비트 정수 long 숫자
NUMBER 숫자 데이터 유형

커스텀 논리 유형

{
  "type": "string",
  "logicalType": "number"
}
문자열
STRING 무제한 문자열 길이 문자열 문자열
TIME 시간대에 관계없이 자정 이후에 경과된 마이크로초 수입니다. time-micros 논리 유형 문자열[ISO-8601]
TIME_INTERVAL 두 이벤트 간 경과 시간(마이크로초)

커스텀 논리 유형

{
  "type": "long",
  "logicalType": "time-interval-micros"
}
long
TIMESTAMP 시간대에 관계없이 에포크 이후 경과된 시간(마이크로초) 타임스탬프 논리 유형 문자열[ISO-8601]
TIMESTAMP WITH TIME ZONE 특정 시간대 오프셋(밀리초)을 사용하여 에포크 이후 경과된 시간(마이크로초)

커스텀 유형

{
  "type": "record",
  "name": "timestampTz",
  "fields": [
    {"name": "timestamp",
     "type": "long"
     "logicalType": "timestamp-micros"},
    {"name": "offset",
     "type": "int"
     "logicalType": "time-millis"}
  ]
}
    
문자열[ISO-8601]
TIME WITH TIME ZONE 특정 시간대 오프셋을 사용하여 자정 이후에 경과된 마이크로초 수

커스텀 유형

{
  "type": "record",
  "name": "timeTz",
  "fields": [
    {"name": "time",
     "type": "long"
     "logicalType": "time-micros"},
    {"name": "offset",
     "type": "int",
     "logicalType": "time-millis"}
  ]
}
    
문자열[ISO-8601]
UNION 가변 데이터 유형 Union 배열
UNSUPPORTED 지원되지 않는 데이터 유형

커스텀 논리 유형

{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR 최대 길이가 n자인 문자열

커스텀 논리 유형

{
  "type": "string",
  "logicalType": "varchar"
  "length": N
}
문자열

Oracle 데이터 유형을 Datastream 통합 유형에 매핑

Oracle 데이터 유형 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)

p<=18이면 LONG입니다. p>18 또는 p=*이면 NUMBER입니다.

NUMBER(p,s>0)

p=*이면 DECIMAL(38,s)이고 그렇지 않으면 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(사용자 정의 유형) UNSUPPORTED
UROWID UNSUPPORTED
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE UNSUPPORTED

MySQL 데이터 유형을 Datastream 통합 유형에 매핑

MySQL 데이터 유형 Datastream 통합 유형
BIGINT(size) SIGNED LONG
BIGINT(size) UNSIGNED 대상이 BigQuery인 경우 DECIMAL, Cloud Storage인 경우 NUMBER
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE 대상이 BigQuery인 경우 DATE, Cloud Storage인 경우 TIMESTAMP
DATETIME(fsp) 대상이 BigQuery인 경우 DATETIME, 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 대상이 BigQuery인 경우 JSON, 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) 대상이 BigQuery인 경우 INTERVAL, 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

PostgreSQL 데이터 유형을 Datastream 통합 유형에 매핑

PostgreSQL 데이터 유형 Datastream 통합 유형
ARRAY JSON
BIGINT LONG
BIT BYTES
BIT_VARYING BYTES
BOOLEAN BOOLEAN
BOX UNSUPPORTED
BYTEA BYTES
CHARACTER
  • 길이 제한이 있으면 VARCHAR로 매핑합니다.
  • 그렇지 않으면 STRING으로 매핑합니다.
CHARACTER_VARYING
  • 길이 제한이 있으면 VARCHAR로 매핑합니다.
  • 그렇지 않으면 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
  • 정밀도가 -1이고 스케일이 -1이면 NUMBER로 매핑합니다.
  • 그렇지 않으면 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

SQL Server 데이터 유형을 Datastream 통합 유형에 매핑

SQL Server 데이터 유형 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

다음 단계