Files and Remote Sources

dadbod-grip opens any DuckDB-readable source as a live editable grid. You do not need an active database connection. DuckDB reads the file directly.

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 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
.arrowyesno

DuckDB auto-detects schema from the file. No setup required.

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 streams the file. Large remote files open quickly because DuckDB reads metadata and fetches only the pages it needs for your current query and page size.

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 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 is useful for data cleaning workflows: open a CSV, fix values, apply, done. No intermediate format conversion. No database needed.

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.