Skip to main content

Outputs

The same source can write to any output — chosen at run time with --output, not baked into the source.

--output valueResult
singer (default)Singer SCHEMA / RECORD / STATE messages on stdout
jsonl:DIR · csv:DIR · tsv:DIR · parquet:DIROne file per export plus state.json, written atomically
duckdb:PATH[:SCHEMA] · ducklake:CATALOG[:SCHEMA]Load into DuckDB or DuckLake
dlt:DESTINATION[:DATASET]Load into any dlt destination

File outputs​

streamwright run my_source --output parquet:out --file-name "{{ export }}/{{ today }}.parquet"

--file-name templates the path from {{ export }}, {{ source }}, {{ today }}, {{ timestamp }} and {{ config.NAME }}.

FormatEach export's file
jsonlOne JSON object per line
csv / tsvA header row, then one row per record
parquetOne row per record, with the export step's column types, zstd-compressed

Warehouses​

  • DuckDB / DuckLake — load directly into a local or lakehouse catalog.
  • dlt — reuse dlt's destinations (BigQuery, Snowflake, Postgres, …) and its schema evolution.

Because output is a run-time choice, the same pipeline can emit Singer messages in one environment and load a warehouse in another — no source change.