このページでは、さまざまなソース データベースから対応する BigQuery データ型へのデータ型マッピングについて説明します。BigQuery にデータを移行する際のさまざまなデータ型の変換方法、BigQuery での MongoDB バイナリ JSON ドキュメントの表現方法、PostgreSQL 配列データを BigQuery の ARRAY データ型としてクエリする方法について説明します。
データ型のマッピング
次の表に、サポートされているソース データベースから BigQuery の宛先へのデータ型の変換を示します。
| ソース データベース | ソースのデータ型 | BigQuery のデータ型 | 
|---|---|---|
| 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) | 
    精度値が 38 以下で、スケール値が 9 以下の場合は NUMERIC。それ以外の場合 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 | 
    UNSUPPORTED | 
  
| 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 | 
    UNSUPPORTED | 
  
| Oracle | NCHAR | 
    STRING | 
  
| Oracle | NCLOB | 
    STRING | 
  
| Oracle | NUMBER(precision, scale>0) | 
    0<p=77 の場合、パラメータ化された小数型にマッピング。p>=77 の場合、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 | 
    UNSUPPORTED | 
  
| 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 | 
    精度 = -1 の場合は、STRING(BigQuery NUMERIC 型には固定精度が必要です)。それ以外の場合は BIGNUMERIC/NUMERIC。詳細については、PostgreSQL ドキュメントの任意精度の数値をご覧ください。 | 
  
| 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(STRING、DATE、NUMBER、BOOLEAN のいずれか) | 
    STRING | 
  
| Salesforce | COMBOBOX | 
    STRING | 
  
| Salesforce | CURRENCY | 
    FLOAT64
    最大文字数は 18 桁です。  | 
  
| Salesforce | DATACATEGORYGROUPREFERENCE | 
    STRING | 
  
| Salesforce | EMAIL | 
    STRING | 
  
| Salesforce | ENCRYPTEDSTRING | 
    STRING | 
  
| Salesforce | ID | 
    STRING | 
  
| Salesforce | JUNCTIONIDLIST | 
    STRING | 
  
| Salesforce | MASTERRECORD | 
    STRING | 
  
| Salesforce | MULTIPICKLIST | 
    STRING | 
  
| Salesforce | PERCENT | 
    FLOAT64
    最大文字数は 18 桁です。  | 
  
| Salesforce | PHONE | 
    STRING | 
  
| Salesforce | PICKLIST | 
    STRING | 
  
| Salesforce | REFERENCE | 
    STRING | 
  
| Salesforce | TEXTAREA | 
    STRING
    最大文字数は 255 文字です。  | 
  
| Salesforce | URL | 
    STRING | 
  
MongoDB のデータ型
MongoDB バイナリ JSON(BSON)ドキュメントは、MongoDB 拡張 JSON(v1)の厳密モード形式で BigQuery に書き込まれます。次の表に、BigQuery でのデータ型の表現と値の例を示します。
| ソースのデータ型 | 値の例 | BigQuery JSON 型の値 | 
|---|---|---|
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 の配列を BigQuery 配列データ型として クエリする
PostgreSQL 配列を BigQuery ARRAY データ型としてクエリする場合は、BigQuery の JSON_VALUE_ARRAY 関数を使用することで JSON の値を BigQuery の列に変換できます。:
SELECT ARRAY(SELECT CAST(element AS TYPE) FROM UNNEST(JSON_VALUE_ARRAY(BQ_COLUMN_NAME,'$')) AS element)AS array_col 
以下を置き換えます。
TYPE: PostgreSQL ソース配列の要素型と一致する BigQuery 型。たとえば、ソースタイプが
BIGINT値の配列の場合、TYPE をINT64に置き換えます。データ型のマッピング方法の詳細については、データ型をマッピングするをご覧ください。
BQ_COLUMN_NAME: BigQuery テーブル内の関連する列の名前。
値を変換する方法には 2 つの例外があります。
ソース列の
BIT、BIT_VARYING、BYTEA値の配列の場合は、次のクエリを実行します。SELECT ARRAY(SELECT FROM_BASE64(element) FROM UNNEST(JSON_VALUE_ARRAY(BQ_COLUMN_NAME,'$')) AS element)
AS array_of_bytes ソース列の
JSON値またはJSONB値の配列の場合は、JSON_QUERY_ARRAY関数を使用します。SELECT ARRAY(SELECT element FROM UNNEST(JSON_QUERY_ARRAY(BQ_COLUMN_NAME,'$')) AS element)
AS array_of_jsons