Browse documentation

Files and Remote Sources

Dadbod Grip opens supported files as queryable grids without an active database connection. DuckDB reads the file directly. Enable write mode only for a supported local format when you intend to replace that file.

The duckdb client must be on your PATH before Dadbod Grip can open these sources.

GripOpen

:GripOpen is the entry point for file-based sources.

:GripOpen                      " picker: choose from recent files + connections
:GripOpen data.parquet         " open local Parquet file
:GripOpen logs.csv             " open local CSV
:GripOpen results.json         " open local JSON / NDJSON
:GripOpen book.xlsx            " open an Excel workbook

GripOpen does not save the source to .grip/connections.json. It opens a read session without polluting your connection list. Use :GripConnect if you want to persist it.

Local file types

ExtensionReadableWritable (--write)
.parquetyesyes
.csvyesyes
.tsvyesyes
.jsonyesyes
.ndjsonyesyes
.jsonlyesyes
.xlsxyesno
.orcyesno
.arrowyesyes
.ipcyesyes

DuckDB infers the schema from the file, so you do not need to declare it first.

Remote HTTPS

Open any publicly accessible Parquet or CSV file directly from a URL:

:GripOpen https://raw.githubusercontent.com/some-repo/main/data.parquet
:GripOpen https://example.com/exports/report.csv

DuckDB reads the URL through httpfs. Response time depends on the file format, server, and query; remote URLs remain read-only.

S3 and object storage

:GripOpen s3://my-bucket/data/customers.parquet
:GripOpen s3://my-bucket/logs/2025/*.parquet   " glob: all matching files as one table

Credentials come from the standard AWS chain: ~/.aws/credentials, AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY env vars, or IAM instance role.

For other S3-compatible stores (Cloudflare R2, MinIO, Backblaze B2):

-- run in the query pad first to configure the endpoint
CREATE TEMP SECRET (
  TYPE s3,
  ENDPOINT 'your-endpoint.example.com',
  KEY_ID 'your-key',
  SECRET 'your-secret'
);

MotherDuck

:GripOpen md:my_database           " open a MotherDuck cloud database
:GripOpen md:                      " pick from available MotherDuck databases

Set MOTHERDUCK_TOKEN in your shell environment before connecting.

Write mode

Write mode makes edits persist back to the source file on disk instead of running DML against a database. Supported for Parquet, CSV, JSON, NDJSON, and TSV.

:Grip data.parquet --write         " open in write mode from the start

Or toggle write mode on any open grid:

g!                                 " toggle write mode

A red WRITE badge appears in the grid winbar when write mode is active. Press a to apply staged edits back to the file. The original file is overwritten.

Write mode supports Parquet, CSV, TSV, JSON, NDJSON, JSONL, Arrow, and IPC. XLSX and ORC remain read-only. Dadbod Grip asks before overwriting a local file; remote URLs are always read-only.

Combining files in federation

Use :GripAttach to bring a file into a DuckDB federation session alongside databases:

:GripAttach /path/to/enrichment.parquet  enrichment

Then JOIN in the query pad:

SELECT prod.customers.email, enrichment.segment
FROM prod.customers
JOIN enrichment.data ON enrichment.customer_id = prod.customers.id

See the Federation docs in the sidebar for the full picture.