Auf dieser Seite werden Datentypzuordnungen von verschiedenen Quelldatenbanken zu den entsprechenden BigQuery-Datentypen beschrieben. Hier erfahren Sie, wie verschiedene Datentypen bei der Migration von Daten zu BigQuery konvertiert werden, wie BigQuery binäre JSON-Dokumente von MongoDB darstellt und wie Sie PostgreSQL-Arraydaten als BigQuery-Datentyp ARRAY
abfragen.
Datentypen zuordnen
In der folgenden Tabelle sind die Datentypkonvertierungen von unterstützten Quelldatenbanken in das BigQuery-Ziel aufgeführt.
Quelldatenbank | Quelldatentyp | BigQuery-Datentyp |
---|---|---|
MySQL | BIGINT(size) |
INT64 |
MySQL | BIGINT (unsigned) |
DECIMAL |
MySQL | BINARY(size) |
STRING (hex encoded) |
MySQL | BIT(size) |
INT64 |
MySQL | BLOB(size) |
STRING (hex encoded) |
MySQL | BOOL |
INT64 |
MySQL | CHAR(size) |
STRING |
MySQL | DATE |
DATE |
MySQL | DATETIME(fsp) |
DATETIME |
MySQL | DECIMAL(precision, scale) |
Wenn der Genauigkeitswert <=38 und der Skalierungswert <=9 ist, dann NUMERIC . Andernfalls BIGNUMERIC . |
MySQL | DOUBLE(size, d) |
FLOAT64 |
MySQL | ENUM(val1, val2, val3, ...) |
STRING |
MySQL | FLOAT(precision) |
FLOAT64 |
MySQL | FLOAT(size, d) |
FLOAT64 |
MySQL | INTEGER(size) |
INT64 |
MySQL | INTEGER (unsigned) |
INT64 |
MySQL |
|
JSON
|
MySQL | LONGBLOB |
STRING (hex encoded) |
MySQL | LONGTEXT |
STRING |
MySQL | MEDIUMBLOB |
STRING (hex encoded) |
MySQL | MEDIUMINT(size) |
INT64 |
MySQL | MEDIUMTEXT |
STRING |
MySQL | SET(val1, val2, val3, ...) |
STRING |
MySQL | SMALLINT(size) |
INT64 |
MySQL | TEXT(size) |
STRING |
MySQL | TIME(fsp) |
INTERVAL |
MySQL | TIMESTAMP(fsp) |
TIMESTAMP |
MySQL | TINYBLOB |
STRING (hex encoded) |
MySQL | TINYINT(size) |
INT64 |
MySQL | TINYTEXT |
STRING |
MySQL | VARBINARY(size) |
STRING (hex encoded) |
MySQL | VARCHAR |
STRING |
MySQL | YEAR |
INT64 |
Oracle | ANYDATA |
UNSUPPORTED |
Oracle | BFILE |
STRING |
Oracle | BINARY DOUBLE |
FLOAT64 |
Oracle | BINARY FLOAT |
FLOAT64 |
Oracle | BLOB |
BYTES |
Oracle | CHAR |
STRING |
Oracle | CLOB |
STRING |
Oracle | DATE |
DATETIME
|
Oracle | DOUBLE PRECISION |
FLOAT64 |
Oracle | FLOAT(p) |
FLOAT64 |
Oracle | INTERVAL DAY TO SECOND |
UNSUPPORTED |
Oracle | INTERVAL YEAR TO MONTH |
UNSUPPORTED |
Oracle | LONG /LONG RAW |
STRING |
Oracle | NCHAR |
STRING |
Oracle | NCLOB |
STRING |
Oracle | NUMBER(precision, scale>0) |
Wenn 0<= p<= 78, wird der Wert parametrisierten Dezimaltypen zugeordnet. Wenn p>=79, dann STRING |
Oracle | NVARCHAR2 |
STRING |
Oracle | RAW |
STRING |
Oracle | ROWID |
STRING |
Oracle | SDO_GEOMETRY |
UNSUPPORTED |
Oracle | SMALLINT |
INT64 |
Oracle | TIMESTAMP |
TIMESTAMP
|
Oracle | TIMESTAMP WITH TIME ZONE |
TIMESTAMP
|
Oracle | UDT (user-defined type) |
UNSUPPORTED |
Oracle | UROWID |
STRING |
Oracle | VARCHAR |
STRING |
Oracle | VARCHAR2 |
STRING |
Oracle | XMLTYPE |
UNSUPPORTED |
PostgreSQL | ARRAY |
JSON
|
PostgreSQL | BIGINT |
INT64 |
PostgreSQL | BIT |
BYTES |
PostgreSQL | BIT_VARYING |
BYTES |
PostgreSQL | BOOLEAN |
BOOLEAN |
PostgreSQL | BOX |
UNSUPPORTED |
PostgreSQL | BYTEA |
BYTES |
PostgreSQL | CHARACTER |
STRING |
PostgreSQL | CHARACTER_VARYING |
STRING |
PostgreSQL | CIDR |
STRING |
PostgreSQL | CIRCLE |
UNSUPPORTED |
PostgreSQL | DATE |
DATE |
PostgreSQL | DOUBLE_PRECISION |
FLOAT64 |
PostgreSQL | ENUM |
STRING |
PostgreSQL | INET |
STRING |
PostgreSQL | INTEGER |
INT64 |
PostgreSQL | INTERVAL |
INTERVAL |
PostgreSQL | JSON |
JSON |
PostgreSQL | JSONB |
JSON |
PostgreSQL | LINE |
UNSUPPORTED |
PostgreSQL | LSEG |
UNSUPPORTED |
PostgreSQL | MACADDR |
STRING |
PostgreSQL | MONEY |
FLOAT64 |
PostgreSQL | NUMERIC |
Wenn „precision“ = -1 , dann STRING (BigQuery-NUMERIC -Typen erfordern eine feste Genauigkeit). Andernfalls BIGNUMERIC /NUMERIC . Weitere Informationen finden Sie im Abschnitt Arbitrary precision numbers (Zahlen mit beliebiger Genauigkeit) in der PostgreSQL-Dokumentation. |
PostgreSQL | OID |
INT64 |
PostgreSQL | PATH |
UNSUPPORTED |
PostgreSQL | POINT |
UNSUPPORTED |
PostgreSQL | POLYGON |
UNSUPPORTED |
PostgreSQL | REAL |
FLOAT64 |
PostgreSQL | SMALLINT |
INT64 |
PostgreSQL | SMALLSERIAL |
INT64 |
PostgreSQL | SERIAL |
INT64 |
PostgreSQL | TEXT |
STRING |
PostgreSQL | TIME |
TIME |
PostgreSQL | TIMESTAMP |
TIMESTAMP |
PostgreSQL | TIMESTAMP_WITH_TIMEZONE |
TIMESTAMP |
PostgreSQL | TIME_WITH_TIMEZONE |
TIME |
PostgreSQL | TSQUERY |
STRING |
PostgreSQL | TSVECTOR |
STRING |
PostgreSQL | TXID_SNAPSHOT |
STRING |
PostgreSQL | UUID |
STRING |
PostgreSQL | XML |
STRING |
SQL Server | BIGINT |
INT64 |
SQL Server | BINARY |
BYTES |
SQL Server | BIT |
BOOL |
SQL Server | CHAR |
STRING |
SQL Server | DATE |
DATE |
SQL Server | DATETIME2 |
DATETIME |
SQL Server | DATETIME |
DATETIME |
SQL Server | DATETIMEOFFSET |
TIMESTAMP |
SQL Server | DECIMAL |
BIGNUMERIC |
SQL Server | FLOAT |
FLOAT64 |
SQL Server | IMAGE |
BYTES |
SQL Server | INT |
INT64 |
SQL Server | MONEY |
BIGNUMERIC |
SQL Server | NCHAR |
STRING |
SQL Server | NTEXT |
STRING |
SQL Server | NUMERIC |
BIGNUMERIC |
SQL Server | NVARCHAR |
STRING |
SQL Server | NVARCHAR(MAX) |
STRING |
SQL Server | REAL |
FLOAT64 |
SQL Server | SMALLDATETIME |
DATETIME |
SQL Server | SMALLINT |
INT64 |
SQL Server | SMALLMONEY |
NUMERIC |
SQL Server | TEXT |
STRING |
SQL Server | TIME |
TIME |
SQL Server | TIMESTAMP /ROWVERSION |
BYTES |
SQL Server | TINYINT |
INT64 |
SQL Server | UNIQUEIDENTIFIER |
STRING |
SQL Server | VARBINARY |
BYTES |
SQL Server | VARBINARY(MAX) |
BYTES |
SQL Server | VARCHAR |
STRING |
SQL Server | VARCHAR(MAX) |
STRING |
SQL Server | XML |
STRING |
Salesforce | BOOLEAN |
BOOLEAN |
Salesforce | BYTE |
BYTES |
Salesforce | DATE |
DATE |
Salesforce | DATETIME |
DATETIME |
Salesforce | DOUBLE |
BIGNUMERIC |
Salesforce | INT |
INT64 |
Salesforce | STRING |
STRING |
Salesforce | TIME |
TIME |
Salesforce | ANYTYPE (kann STRING , DATE , NUMBER oder BOOLEAN sein) |
STRING |
Salesforce | COMBOBOX |
STRING |
Salesforce | CURRENCY |
FLOAT64
Die maximal zulässige Länge beträgt 18 Ziffern. |
Salesforce | DATACATEGORYGROUPREFERENCE |
STRING |
Salesforce | EMAIL |
STRING |
Salesforce | ENCRYPTEDSTRING |
STRING |
Salesforce | ID |
STRING |
Salesforce | JUNCTIONIDLIST |
STRING |
Salesforce | MASTERRECORD |
STRING |
Salesforce | MULTIPICKLIST |
STRING |
Salesforce | PERCENT |
FLOAT64
Die maximal zulässige Länge beträgt 18 Ziffern. |
Salesforce | PHONE |
STRING |
Salesforce | PICKLIST |
STRING |
Salesforce | REFERENCE |
STRING |
Salesforce | TEXTAREA |
STRING
Die maximal zulässige Länge beträgt 255 Zeichen. |
Salesforce | URL |
STRING |
MongoDB-Datentypen
Binäre JSON-Dokumente (BSON) von MongoDB werden in BigQuery im Format des erweiterten JSON-Formats von MongoDB (v1) im strikten Modus geschrieben. In der Tabelle sehen Sie, wie Datentypen in BigQuery dargestellt werden, sowie Beispielwerte.
Quelldatentyp | Beispielwert | BigQuery-JSON-Typwert |
---|---|---|
DOUBLE |
3.1415926535
|
3.1415926535 |
STRING | "Hello, MongoDB!" | "Hello, MongoDB!" |
ARRAY |
| ["item1",123,true,{"subItem":"object in array"}] |
BINARY DATA |
new BinData(0, "SGVsbG8gQmluYXJ5IERhdGE=") |
{"$binary":"SGVsbG8gQmluYXJ5IERhdGE=","$type":"00"} |
BOOLEAN | true | true |
DATE |
2024-12-25T10:30:00.000+00:00
|
{"$date": 1735122600000}
|
NULL | null | null |
REGEX | /^mongo(db)?$/i | {"$options":"i","$regex":"^mongo(db)?$"} |
JAVASCRIPT | function() {return this.stringField.length;} | {"$code":"function() {\n return this.stringField.length;\n }"} |
DECIMAL128 | NumberDecimal("1234567890.1234567890") | {"$numberDecimal":"1234567890.1234567890"} |
OBJECTID | ObjectId('673c5d8dbfe2e51808cc2c3d') | {"$oid": "673c5d8dbfe2e51808cc2c3d"} |
LONG | 3567587327 | {"$numberLong": "3567587327"} |
INT32 | 42 | 42 |
INT64 | 1864712049423024127 | {"$numberLong": "1864712049423024127"} |
TIMESTAMP | new Timestamp(1747888877, 1) | {"$timestamp":{"i":1,"t":1747888877}} |
PostgreSQL-Array als BigQuery-Array-Datentyp abfragen
Wenn Sie ein PostgreSQL-Array lieber als BigQuery-Datentyp ARRAY
abfragen möchten, können Sie die JSON
-Werte mit der BigQuery-Funktion JSON_VALUE_ARRAY
in ein BigQuery-Array konvertieren:
SELECT ARRAY(SELECT CAST(element AS TYPE) FROM UNNEST(JSON_VALUE_ARRAY(BQ_COLUMN_NAME,'$')) AS element)AS array_col
Ersetzen Sie Folgendes:
TYPE: Der BigQuery-Typ, der dem Elementtyp im PostgreSQL-Quellarray entspricht. Wenn der Quelltyp beispielsweise ein Array von
BIGINT
-Werten ist, ersetzen Sie TYPE durchINT64
.Weitere Informationen zum Zuordnen der Datentypen finden Sie unter Datentypen zuordnen.
BQ_COLUMN_NAME: Der Name der relevanten Spalte in der BigQuery-Tabelle.
Es gibt zwei Ausnahmen bei der Umrechnung der Werte:
Führen Sie für Arrays mit
BIT
-,BIT_VARYING
- oderBYTEA
-Werten in der Quellspalte die folgende Abfrage aus:SELECT ARRAY(SELECT FROM_BASE64(element) FROM UNNEST(JSON_VALUE_ARRAY(BQ_COLUMN_NAME,'$')) AS element)
AS array_of_bytes Verwenden Sie für Arrays mit
JSON
- oderJSONB
-Werten in der Quellspalte die FunktionJSON_QUERY_ARRAY
:SELECT ARRAY(SELECT element FROM UNNEST(JSON_QUERY_ARRAY(BQ_COLUMN_NAME,'$')) AS element)
AS array_of_jsons