Skip to content

MotherDuck ​

MotherDuck is hosted DuckDB. Use it when the destination should be shareable without running DuckDB on the Skipprd host.

Before you begin ​

  • A MotherDuck token (motherduck.com → settings).
  • A database name. Skipprd creates table in schema when it can.
bash
export MOTHERDUCK_TOKEN="..."

Configure ​

python
from skippr import Config, DataSinkMotherduck, EnvRef, Pipeline

cfg = Config.discover()
md = cfg.data_sink(
    "warehouse",
    DataSinkMotherduck(
        motherduck_token=EnvRef("MOTHERDUCK_TOKEN"),
        database="analytics",
        schema="bronze",
        table="events",
    ),
)
cfg.pipeline("events", Pipeline(data_source=cfg.get_data_source("sample"), data_sink=md))
cfg.save()
bash
skipprd connect data-sink motherduck \
  --pipeline events \
  --name warehouse \
  --motherduck-token '${MOTHERDUCK_TOKEN}' \
  --database analytics \
  --schema bronze \
  --table events
yaml
data_sinks:
  warehouse:
    Motherduck:
      motherduck_token: ${MOTHERDUCK_TOKEN}
      database: analytics
      schema: bronze
      table: events

Options ​

KeyTypeRequired/DefaultDescription
motherduck_tokensecretRequiredToken as ${ENV}
databasestringRequiredDatabase
tablestringRequiredTable
schemastringNot setSchema (MotherDuck default if unset)

How data lands ​

Retries are exactly once. For a local file warehouse, use DuckDB instead.

Troubleshooting ​

SymptomFix
Auth failedRecreate the token and export it in this shell
Database missingCreate it in MotherDuck, or use a token that can create databases

Next steps ​