> ## Documentation Index
> Fetch the complete documentation index at: https://ngquct-feat-ai-sql-walkthroughs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# DuckDB

> Open local DuckDB files or connect to a remote DuckDB server over Quack

# DuckDB

DuckDB is an embedded analytical database built for OLAP workloads. TablePro opens local DuckDB files and connects to remote DuckDB servers over the Quack protocol. The driver plugin bundles DuckDB 1.5.3 and is a downloadable plugin: TablePro prompts to install it when you pick DuckDB in the connection form.

## Connecting to a local DuckDB file

<Steps>
  <Step title="Create a new connection">
    Click **New Connection** or press **Cmd+N**, then choose **DuckDB**.
  </Step>

  <Step title="Keep Connection Type set to Local File">
    Click **Browse** to select an existing `.duckdb` file, or enter a path to create a new database.
  </Step>

  <Step title="Connect">
    Click **Save & Connect** to open the database.
  </Step>
</Steps>

<Frame caption="DuckDB connection form">
  <img className="block dark:hidden" src="https://mintcdn.com/ngquct-feat-ai-sql-walkthroughs/REI9tfF_TGivM099/images/duckdb-connection-form.png?fit=max&auto=format&n=REI9tfF_TGivM099&q=85&s=e97ec62e6d4f7c2f9bae525340379188" alt="DuckDB connection form with Local File and Remote (Quack) connection types" width="1560" height="960" data-path="images/duckdb-connection-form.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/ngquct-feat-ai-sql-walkthroughs/REI9tfF_TGivM099/images/duckdb-connection-form-dark.png?fit=max&auto=format&n=REI9tfF_TGivM099&q=85&s=c4fc5b5b191f0b1c35c58fb6f9865c45" alt="DuckDB connection form with Local File and Remote (Quack) connection types" width="1560" height="960" data-path="images/duckdb-connection-form-dark.png" />
</Frame>

## Connecting to a remote DuckDB server (Quack)

Quack is DuckDB's client-server protocol. A DuckDB server exposes itself with `quack_serve`, and TablePro attaches to it as a remote database. Set **Connection Type** to **Remote (Quack, experimental)** and fill in:

| Field              | Value                                                  |
| ------------------ | ------------------------------------------------------ |
| **Host**           | Server address (required)                              |
| **Port**           | `9494` by default                                      |
| **Token**          | The token the server was started with                  |
| **Database Alias** | Name for the attached remote, `remotedb` if left empty |

Click **Save & Connect**. TablePro opens an in-memory DuckDB, registers the token as a secret, and attaches the remote server.

<Warning>
  Remote (Quack) is experimental and matches the Quack beta:

  * You can run SQL against the remote, for example `SELECT * FROM alias.main.your_table`.
  * The sidebar cannot list remote tables yet; the Quack beta cannot enumerate a remote catalog.
  * On macOS the quack extension downloads from the DuckDB extension registry on first use, so the first remote connection needs network access.
</Warning>

## Connection URL

```text theme={null}
# Local file
duckdb:///path/to/database.duckdb

# Remote (Quack)
quack://host:9494/alias
```

See [Connection URL Reference](/databases/connection-urls) for all parameters.

## Opening DuckDB files from Finder

Double-click a `.duckdb` or `.ddb` file in Finder to open it directly in TablePro.

## Schemas

DuckDB supports multiple schemas per database; the default is `main`. Browse them in the sidebar. DuckDB has no toolbar schema switcher.

## Querying files directly

DuckDB can query CSV, Parquet, and JSON files with SQL:

```sql theme={null}
SELECT * FROM 'data.csv';
SELECT * FROM read_parquet('analytics.parquet');
SELECT * FROM read_json('config.json');
```

## DuckDB on iOS

The iOS app supports DuckDB too. In the connection form, pick DuckDB and either turn on **In-Memory Database** or open a `.duckdb`/`.ddb` file through the Files app. Opened files keep working across launches through a security-scoped bookmark, so edits write back to the original file.

The iOS build statically links the `core_functions`, `json`, `parquet`, `icu`, `autocomplete`, `httpfs`, and `quack` extensions, so remote Quack connections work on iOS without a download. Runtime extension autoloading stays off, so other on-demand extensions are not available on iOS. Large in-memory databases are bounded by the app's memory budget.

## Limitations

A local DuckDB file allows only one writer at a time. Close other processes holding the file before connecting.
