Target data type support & mapping for BigQuery sources
Columns of the STRUCT data type are not supported directly, but if the target table contains individual columns with the same name and data type as the fields in the STRUCT column, it will work. Alternatively, add the parameter FlattenObjects=false
to the connection URL, to send STRUCT values as single JSON strings, and map them to a target column that can store JSON strings.
If your screen is not wide enough to display the whole table, click in a cell and drag left to view the right-hand columns.
BigQuery Data Type | Azure Synapse | BigQuery | Databricks | Db2 for z/OS | MariaDB | Microsoft Fabric | MySQL | Oracle | PostgreSQL | Snowflake | Spanner | SQL Server | Yellowbrick |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BIGNUMERIC | varchar(8000) | string | string | numeric | TEXT | varchar(8000) | TEXT | number | numeric(p,s) | VARCHAR | STRING(MAX) | varchar(8000) | character varying |
BIGNUMERIC(p,0) | numeric(p,s), if (p) <= 38, if (s) <= 38 | numeric, if (p) <= 29, if (s) <= 9 | decimal(p,s), if (p) <= 38, if (s) <= 37 | numeric(p,s), if (p) <= 31, if (s) <= 30 | decimal(p,s), if (p) <= 65, if (s) <= 30 | decimal(p,s), if (p) <= 38, if (s) <= 38 | decimal(p,s), if (p) <= 65, if (s) <= 30 | number(p,s), if (p) <= 38, if (s) <= 127 | numeric(p,s), if (p) <= 1000, if (s) <= 1000 | numeric(p,s), if (p) <= 38, if (s) <= 37 | NUMERIC, if (p) <= 38, if (s) <= 9 | numeric(p,s), if (p) <= 38, if (s) <= 38 | decimal(p,s), if (p) <= 38, if (s) <= 38 |
BIGNUMERIC(p,s) | varchar(8000) numeric(p,s), if (p) <= 38, if (s) <= 38 | string numeric, if (p) <= 29, if (s) <= 9 | string decimal(p,s), if (p) <= 38, if (s) <= 37 | numeric(p,s), if (p) <= 31, if (s) <= 30 | TEXT decimal(p,s), if (p) <= 65, if (s) <= 30 | varchar(8000) decimal(p,s), if (p) <= 38, if (s) <= 38 | TEXT decimal(p,s), if (p) <= 65, if (s) <= 30 | number(p,s), if (p) <= 38, if (s) <= 127 | numeric(p,s), if (p) <= 1000, if (s) <= 1000 | numeric(p,s), if (p) <= 38, if (s) <= 37 VARCHAR | NUMERIC, if (p) <= 38, if (s) <= 9 STRING(MAX) | varchar(8000) numeric(p,s), if (p) <= 38, if (s) <= 38 | character varying decimal(p,s), if (p) <= 38, if (s) <= 38 |
BOOL | BIT | boolean | boolean | Not supported | bool | BIT | bool | Not supported | boolean | BOOLEAN | BOOL | BIT | boolean |
BYTES | varbinary(8000) | bytes(p) | binary | blob | varbinary(65535) | varbinary(8000) | varbinary(65535) | BLOB | bytea | VARBINARY | BYTES(MAX) | varbinary(max) | character varying |
BYTES(p) | varbinary(p), if (p) <= 8000 | bytes(p), if (p) <= 9223372036854775807 | binary | varbinary(4046), if (p) <= 1011 | varbinary(p), if (p) <= 65535 | varbinary(p), if (p) <= 8000 | varbinary(p), if (p) <= 65535 | BLOB | bytea, if (p) <= 2147483647 | VARBINARY | BYTES(p), if (p) <= 10485760 | varbinary(p), if (p) <= 8000 | character varying(p), if (p) <= 64000 |
DATE | date | date | date | date | date | date | date | date | date | date | DATE | date | date |
DATETIME | datetime2 | datetime | timestamp | timestamp | datetime | datetime2(6) | datetime | timestamp | timestamp(s) without time zone | datetime | TIMESTAMP | datetime2 | timestamp |
FLOAT64 | float(p) | float64 | float | real | float(p) | float(p) | float(p) | float(p) | double precision | float | FLOAT64 | float(p) | real |
GEOGRAPHY | varchar(p) | string | string | varchar(p) | varchar(p) | varchar(p) | varchar(p) | VARCHAR2(p) | character varying(p) | VARCHAR(p) | STRING(p) | varchar(p) | character varying(p) |
INT64 | bigint | int64 | bigint | bigint | bigint | bigint | bigint | int | bigint | integer | INT64 | bigint | bigint |
INTERVAL | varchar(p) | string | string | varchar(p) | varchar(p) | varchar(p) | varchar(p) | VARCHAR2(p) | character varying(p) | VARCHAR(p) | STRING(p) | varchar(p) | character varying(p) |
JSON | varchar(8000) | string | string | clob | json | varchar(8000) | json | clob | json | VARIANT | STRING(MAX) | varchar(max) | character varying |
NUMERIC | numeric(p,s) | bignumeric | decimal(p,s) | numeric | decimal(p,s) | decimal(p,s) | decimal(p,s) | number(p,s) | numeric(p,s) | numeric(p,s) | NUMERIC | numeric(p,s) | decimal(p,s) |
NUMERIC(p,0) | numeric(p,s), if (p) <= 38, if (s) <= 38 | numeric, if (p) <= 29, if (s) <= 9 | decimal(p,s), if (p) <= 38, if (s) <= 37 | numeric(p,s), if (p) <= 31, if (s) <= 30 | decimal(p,s), if (p) <= 65, if (s) <= 30 | decimal(p,s), if (p) <= 38, if (s) <= 38 | decimal(p,s), if (p) <= 65, if (s) <= 30 | number(p,s), if (p) <= 38, if (s) <= 127 | numeric(p,s), if (p) <= 1000, if (s) <= 1000 | numeric(p,s), if (p) <= 38, if (s) <= 37 | NUMERIC, if (p) <= 38, if (s) <= 9 | numeric(p,s), if (p) <= 38, if (s) <= 38 | decimal(p,s), if (p) <= 38, if (s) <= 38 |
NUMERIC(p,s) | numeric(p,s), if (p) <= 38, if (s) <= 38 | numeric, if (p) <= 29, if (s) <= 9 bignumeric, if 29 <= (p) <= 39, if 9 <= (s) <= 38 | decimal(p,s), if (p) <= 38, if (s) <= 37 | numeric(p,s), if (p) <= 31, if (s) <= 30 | decimal(p,s), if (p) <= 65, if (s) <= 30 | decimal(p,s), if (p) <= 38, if (s) <= 38 | decimal(p,s), if (p) <= 65, if (s) <= 30 | number(p,s), if (p) <= 38, if (s) <= 127 | numeric(p,s), if (p) <= 1000, if (s) <= 1000 | numeric(p,s), if (p) <= 38, if (s) <= 37 | NUMERIC, if (p) <= 38, if (s) <= 9 | numeric(p,s), if (p) <= 38, if (s) <= 38 | decimal(p,s), if (p) <= 38, if (s) <= 38 |
STRING | varchar(8000) | string | string | clob(p) | longtext | varchar(8000) | longtext | clob | character varying | VARCHAR | STRING(MAX) | varchar(max) | character varying |
TIME | time | time | string | time | time(s) | time(6) | time(s) | VARCHAR2(150) | time(s) | time | STRING(150) | time | time |
TIMESTAMP | datetimeoffset | timestamp | timestamp | timestamp with time zone | timestamp | datetime2(6) | timestamp | timestamp with time zone | timestamp(s) with time zone | timestamp with time zone | TIMESTAMP | datetimeoffset | timestamptz |