>_STRYKE-DUCKDB
No import step. No schema. Just SQL. Embedded DuckDB SQL engine for stryke. Direct-query parquet / CSV / JSON from disk or URL without loading, persistent .duckdb files when you need them, full standard SQL on top. The CLI launcher is named duck.
Install
# build the helper binary, install as a stryke package cd ~/projects/stryke-duckdb cargo build --release s pkg install -g . # one-liner make install # verify duck --help
After install, duck --help works from anywhere on PATH (assuming ~/.stryke/bin/ is on PATH). The stryke library is auto-discoverable to any project that depends on the package via [deps] duck = { path = "..." } or, when published, by name.
CLI: duck
| query a parquet file directly | duck "SELECT COUNT(*) FROM 'sales.parquet'" |
| read CSV from URL | duck "SELECT * FROM read_csv_auto('https://example.com/data.csv') LIMIT 10" |
| join parquet + CSV inline | duck "SELECT u.name, s.total FROM 'users.parquet' u JOIN 'sales.csv' s USING(id)" |
| persistent database | duck --db myapp.duckdb "CREATE TABLE events AS SELECT * FROM 'events.parquet'" |
| export to parquet | duck --output q.parquet "SELECT * FROM 'big.csv' WHERE qty > 100" |
The full flag matrix lives in the README "CLI" section.
Why a package, not a builtin
DuckDB is an in-process analytical SQL engine; the duckdb crate with bundled compiles libduckdb from source into one static binary. Single-shot opt-in install.
The stryke side is a thin NDJSON-pipe wrapper; the heavy code lives in the stryke-duckdb-helper sidecar binary and is loaded on demand. Core stryke is never linked against this package's deps.
Helper protocol
The stryke-duckdb-helper sidecar speaks newline-delimited JSON over stdin/stdout. The stryke library shells out per call and pipes structured data both ways. This keeps stryke startup small while making the package's surface area available on demand.
# manual invocation (debugging only)
echo '{"op":"version"}' | stryke-duckdb-helper
Layout
stryke-duckdb/ ├── Cargo.toml # bin = stryke-duckdb-helper (publish = false) ├── src/ │ └── main.rs # helper binary entry point ├── lib/ # stryke .stk wrapper(s) ├── stryke.toml # stryke package manifest ├── t/ # zunit-style tests ├── examples/ # runnable .stk examples ├── Makefile # `make install` builds + installs └── docs/ # this site (GitHub Pages)
Sibling packages
Part of the stryke connector family. Browse the others via the MenkeTechnologiesMeta umbrella repo (Tier 2):
- stryke-arrow — Apache Arrow / Parquet / Feather / arrow-CSV/JSON
- stryke-aws — S3, DynamoDB, SQS, Lambda, STS
- stryke-docker — Docker daemon API
- stryke-duckdb — embedded DuckDB
- stryke-gcp — Cloud Storage + Pub/Sub
- stryke-grpc — reflection-based gRPC client
- stryke-k8s — Kubernetes
- stryke-kafka — Apache Kafka
- stryke-mongo — MongoDB
- stryke-mysql — MySQL / MariaDB
- stryke-parquet — Parquet file inspector
- stryke-postgres — PostgreSQL
- stryke-redis — Redis / Valkey
- stryke-spark — Spark Connect (no JVM)