Docs
Docs /Data Management /Import data
Data ManagementImport

Import data

Load a CSV, JSON, Excel, Parquet or Avro file, a Google Sheet, or whatever is on your clipboard into a BigQuery table. Schema is detected from the first 1,000 rows and editable before anything is written.

Import Data tab
Import Data

Drop file here to import
or click to browse your files

CSVJSONExcelParquetAvro

or import from

Google DriveGoogle SheetsClipboard
A dropped file goes straight to the schema step.

Opening it

  • Drag a file onto the app window. .sql and .bqsql files open as query tabs instead.
  • Right-click a dataset or table in the schema tree → Import.
  • KImport data.

Only one Import tab exists at a time; opening it again switches to the existing one. Importing needs a signed-in Google account — it’s unavailable in the playground.

Sources

SourceWhat it acceptsLimit
Drop zone.csv .json (array or NDJSON) .xlsx .xls .parquet .avroNone enforced
Google DriveThe same formats from the Drive picker200 MB
Google SheetsA spreadsheet from the Drive picker (filtered to Sheets)
ClipboardJSON, tab-separated, comma-separated, or one value per line10 MB

Picking a Google Sheet from the Drive picker reroutes you to the Sheets flow. Clipboard text is detected in that order: JSON if it starts with [ or { and parses; TSV if most of the first 10 lines contain a tab; CSV if most contain a comma; otherwise a single column.

The schema step

Once a source is loaded the tab splits: sections on the left, Data preview on the right (Showing 100 of 15,847 rows; the preview caps at 100) plus a list of skipped rows and why. Everything you change on the left is reflected in the preview before you import.

Import Data tab → schema step
orders_2026.csv · CSV · 15,847 rows
Destination
Project ace-analytics
Dataset warehouse
Table Name orders_2026
14 existing tables available
Import as temporary table
Write Mode
Create if neededCreate table if it does not exist
Append to tableAdd rows to existing table
Overwrite tableReplace all existing data
Schema (6)
First row is header
columntypemode
1order_idINT64REQUIRED
2customer_idSTRINGNULLABLE
3ordered_atTIMESTAMPNULLABLE
4amountNUMERICNULLABLE
Options
None
Ingestion time
By column
Start Import
Left panel, top to bottom. Options is collapsed by default. The Table Name helper reads Enter a new table name while the dataset is empty.

Choosing where the data goes

Project and dataset are selects; the project defaults to the one you used last. Table Name autocompletes over existing tables and must start with a letter or underscore. With Create if needed, the app checks first and refuses to overwrite an existing table — switch to Append to table or Overwrite table, or pick another name.

Import as temporary table adds an Expires after select (1, 6, 24 or 72 hours; default 24) and sets the table’s expiration.

Editing the detected schema

Each detected column is a row you can edit in place:

  • Click the name to rename it, the italic No description to describe it.
  • Click the type badge to change it (STRING, INT64, FLOAT64, BOOL, DATE, TIMESTAMP, DATETIME, TIME, JSON, STRUCT, ARRAY, BYTES, NUMERIC, BIGNUMERIC, GEOGRAPHY). Numbers that look like epochs get an extra Epoch Conversion choice — seconds or milliseconds to TIMESTAMP, or keep as INT64.
  • Click NULLABLE / REQUIRED to toggle the mode.
  • Drag rows to reorder.

Columns can’t be removed. Untick First row is header (CSV and Excel) to get column_1 … column_n, all STRING. With Prism AI enabled, Fill with AI names and describes columns for you, with undo. Excel files with several sheets get a Sheet select above the schema.

Partitioning, clustering and CSV parsing

  • Partitioning: None, Ingestion time, or By column — the last needs a DATE, TIMESTAMP or DATETIME column and asks for a Granularity (DAY, HOUR, MONTH, YEAR).
  • Clustering (up to 4 columns).
  • CSV only: Delimiter (comma, tab, semicolon, pipe — the detected one is marked) and Null marker.

Running it

Start Import uploads the file and runs a BigQuery load job; the progress card shows rows so far, the destination and elapsed time, with Cancel. On success you get the row count, duration and size, plus Query This Table — a new tab with SELECT * FROM … LIMIT 100 — and Import Another. The schema tree refreshes on its own. Load jobs are free in BigQuery; you pay for storage only.

Google Sheets

A Google Sheets section appears above Destination with a Sheet tab select, a Range field in A1 notation (A1:D100, A:D) and Apply to re-fetch. Formula errors in the first 100 rows (#REF!, #N/A, #DIV/0! …) surface as a warning per column.

Tick Connected table to create an external table instead of copying the data — BigQuery reads live data from Sheet. No column reordering, type mapping, or partitioning. The Schema and Options sections, write mode and the temporary-table option disappear, and the button becomes Create Connected Table, which runs a CREATE EXTERNAL TABLE … OPTIONS(format='GOOGLE_SHEETS') statement.