# Export
> Send a result set, or a whole table, to Google Sheets, a file on disk, the clipboard, a BigQuery table, or Cloud Storage. One dialog, opened from the grid footer, with the row count chosen at the bottom.
Source: https://docs.querylab.io/results/export/
Google Drive
Download
BigQuery
Cloud Storage
Clipboard
Developer
CSV
Excel
JSON
Markdown
DuckDB
All rows ▾
Export Results. The tabs remember which one you used last.
## Opening it
Click **Export** (the tray icon) at the right of the results footer. On a narrow panel it moves into the **More options** menu. Right-clicking a table in the schema tree and choosing **Export** opens the same dialog for the whole table; rows are fetched when you confirm.
`⌘`
`⇧`
`X` in the editor opens the same dialog. If you haven't granted Google
Drive access yet, that press starts the consent flow instead; press it again
afterwards.
There is no Cancel button; `Esc` or a click outside closes it.
## Destinations
| Tab | Options | Notes |
| ----------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| **Google Drive** | Create new spreadsheet · Add to existing spreadsheet | Up to 100,000 rows. Needs the Drive scope; **Grant Access** appears if you haven't given it |
| **Download** | CSV · Excel · JSON · Markdown · DuckDB | JSON needs a query result (not a table export). DuckDB is a `.sql` file that keeps nested fields |
| **BigQuery** | Save to Table | Opens a new tab with a `CREATE TABLE` template you run yourself |
| **Cloud Storage** | CSV · JSON · Parquet · Avro | Opens a new tab with an `EXPORT DATA` statement you run yourself |
| **Clipboard** | TSV · Slack | Up to 1,000 rows. Slack is a padded table in a code block |
| **Developer** | dbt Model | The same generator as the dbt panel's **Export dbt Model** |
### Google Sheets
On the first export from a tab, pick **Create new spreadsheet** (name defaults to the tab name plus a timestamp) or **Add to existing spreadsheet** and browse Drive. The export runs in the background; the notification links to the sheet and offers **Open in App**, which loads it in a Querylab.io tab.
After that, the dialog remembers the destination and shows it first:
Google Drive
Download
BigQuery
Cloud Storage
Clipboard
Developer
Diesel pass rates
Tab: "Query 1 - Aug 28 14:02" - 3 hours ago
- Tab name: Query 1 - Aug 28 14:02
Update
Append ▾
or
New sheet
Browse Drive
A tab that has exported before. Update overwrites the sheet, Append adds rows below it.
**Append** has two flavours: **Append with header** and **Append data only**. If the named tab doesn't exist in the spreadsheet yet, either action creates it.
Two shortcuts repeat the last export of the tab without the dialog, sending the current grid page:
| Shortcut | Action |
| ------------------------------------ | ---------------------------- |
| `⌘ ⇧ G` | Update the previous sheet |
| `⌘ ⇧ A` | Append to the previous sheet |
They are editor actions, so the SQL editor must have focus, and they need a previous export on that tab; otherwise you get _No previous export_.
## Choosing how many rows
The text at the bottom-left (**All rows**, or `1,000 / 48,213`) is a menu:
- **Page (N)**: the rows on the current grid page. Absent for table exports.
- **1,000**, **10,000**, **100,000**: each offered only if the result has that many.
- **500,000**: downloads in Chrome and Edge; other browsers stop at 100,000.
- **All (N)** or **Max (N)**: everything, or the destination's cap.
- **Custom…**: type a number.
The BigQuery and Cloud Storage tabs hide the selector; they generate SQL instead of moving rows.
## Copy without the dialog
The grid footer's **Copy** button copies the visible page as tab-separated text, and the command palette (`⌘ K`) has **Copy results as image**, which captures the rows currently on screen. See [Results grid](https://docs.querylab.io/results/results-grid/).
## Opening a sheet in the app
`⌘`
`K` → **Open Google Sheet** browses Drive and loads a spreadsheet in a
tab; **Create New Google Sheet** makes a blank one.