Skip to main content
Version: 0.4 (Latest)

BigQuery Reference

Reference material for BigQuery Publishing -- data type mappings, CLI arguments, querying, and troubleshooting.

Data Type Mapping

Source types map automatically to BigQuery-compatible types. LakeXpress exports through Parquet, so the mapping is driven by the normalized source type name.

PostgreSQL to BigQuery

PostgreSQL TypeBigQuery Type
SMALLINT, INTEGER, INT4, BIGINT, INT8INT64
NUMERIC(p,s)NUMERIC
REAL, FLOAT4, DOUBLE PRECISION, FLOAT8FLOAT64
VARCHAR(n), TEXT, CHAR(n), UUID, array []STRING
BOOLEANBOOL
DATEDATE
TIMETIME
TIMESTAMP, TIMESTAMPTZTIMESTAMP
BYTEABYTES
JSON, JSONBJSON

SQL Server to BigQuery

SQL Server TypeBigQuery Type
TINYINT, SMALLINT, INT, BIGINTINT64
DECIMAL(p,s), MONEY, SMALLMONEYNUMERIC
FLOAT, REALFLOAT64
BITBOOL
VARCHAR(n), NVARCHAR(n), CHAR(n), NCHAR(n), TEXT, NTEXT, UNIQUEIDENTIFIERSTRING
DATEDATE
DATETIME, DATETIME2, SMALLDATETIMEDATETIME
DATETIMEOFFSETTIMESTAMP
VARBINARYBYTES

Oracle to BigQuery

Oracle TypeBigQuery Type
NUMBER, NUMBER(p,s)NUMERIC
FLOATFLOAT64
VARCHAR2(n), NVARCHAR2(n), CHAR(n), CLOB, NCLOBSTRING
DATEDATE
TIMESTAMPTIMESTAMP
RAW, BLOBBYTES

Teradata to BigQuery

Teradata TypeBigQuery Type
BYTEINT, VARCHAR(n), CHAR(n), CLOB, VARBYTESTRING
SMALLINT, INTEGER, BIGINTINT64
DECIMAL(p,s), NUMERIC(p,s), NUMBERNUMERIC
FLOAT, REALFLOAT64
DATEDATE
TIMETIME
TIMESTAMPTIMESTAMP
BYTE, BLOBBYTES

MySQL to BigQuery

MySQL TypeBigQuery Type
TINYINT, SMALLINT, INT, BIGINTINT64
MEDIUMINT, YEAR, VARCHAR(n), CHAR(n), TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET, TINYBLOB, MEDIUMBLOB, LONGBLOBSTRING
DECIMAL(p,s)NUMERIC
FLOAT, DOUBLEFLOAT64
BITBOOL
DATEDATE
TIMETIME
DATETIMEDATETIME
TIMESTAMPTIMESTAMP
BINARY, VARBINARY, BLOBBYTES
JSONJSON

MariaDB to BigQuery

MariaDB TypeBigQuery Type
TINYINT, SMALLINT, INT, BIGINTINT64
MEDIUMINT, YEAR, VARCHAR(n), CHAR(n), TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET, TINYBLOB, MEDIUMBLOB, LONGBLOBSTRING
DECIMAL(p,s)NUMERIC
FLOAT, DOUBLEFLOAT64
BITBOOL
DATEDATE
TIMETIME
DATETIMEDATETIME
TIMESTAMPTIMESTAMP
BINARY, VARBINARY, BLOBBYTES
JSONJSON

SAP HANA to BigQuery

SAP HANA TypeBigQuery Type
TINYINT, SMALLINT, INTEGER, BIGINTINT64
DECIMAL(p,s), SMALLDECIMALNUMERIC
REAL, DOUBLEFLOAT64
BOOLEANBOOL
VARCHAR(n), NVARCHAR(n), CHAR(n), NCHAR(n), CLOB, NCLOB, TEXTSTRING
DATEDATE
TIMETIME
TIMESTAMP, SECONDDATETIMESTAMP
VARBINARY, BLOBBYTES

CLI Reference

BigQuery Publishing Arguments

OptionTypeDescription
--publish_target IDStringCredential ID for BigQuery publishing (required)
--publish_schema_pattern PATTERNStringDynamic dataset naming pattern (default: {schema})
--publish_table_pattern PATTERNStringDynamic table naming pattern (default: {table})
--publish_method TYPEStringTable type: external (default) or internal
--n_jobs NIntegerParallel workers for table creation (default: 1)

Querying BigQuery Tables

BigQuery Console:

SELECT * FROM `my-project.lx_tpch_1.customer` LIMIT 10;

bq CLI:

bq query --use_legacy_sql=false \
'SELECT * FROM `my-project.lx_tpch_1.customer` LIMIT 10'

Python (google-cloud-bigquery):

from google.cloud import bigquery

client = bigquery.Client()
query = "SELECT * FROM `my-project.lx_tpch_1.customer` LIMIT 10"
df = client.query(query).to_dataframe()
print(df)

pandas-gbq:

import pandas_gbq

query = "SELECT * FROM `my-project.lx_tpch_1.customer` LIMIT 10"
df = pandas_gbq.read_gbq(query, project_id="my-project")
print(df)

Troubleshooting

Common Issues

"Permission denied" errors:

  • Verify the service account has BigQuery Data Editor role
  • Check GCS bucket access from the service account
  • Ensure project ID in credentials matches the target project

"Dataset not found" errors:

  • Check that location matches your GCS bucket region
  • Cross-region access between GCS and BigQuery may cause issues

"Invalid table" errors for external tables:

  • Verify GCS path contains valid Parquet files
  • Check schema mapping for your data types

Verifying Setup

Test BigQuery connectivity:

lakexpress -a credentials.json \
--lxdb_auth_id lxdb \
--source_db_auth_id postgres_prod \
--source_schema_name public \
--target_storage_id gcs_datalake \
--fastbcp_dir_path /path/to/FastBCP \
--publish_target bigquery_prod \
--tables customer \
--dry_run

Validate credentials:

from google.cloud import bigquery
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file(
'/path/to/service-account.json'
)
client = bigquery.Client(credentials=credentials, project='my-project')
print(list(client.list_datasets()))

See Also

Copyright © 2026 Architecture & Performance.