dataeng.tools

Warehouse DDL & dbt generator

Drop a Parquet, Avro, CSV, JSON or JSONL file to turn its schema into a CREATE TABLE, a warehouse load command, and dbt models for Snowflake, BigQuery, Redshift or Postgres. The schema is inferred in your browser (DuckDB-WASM) — only column names and types are used, and nothing is uploaded.

Drop a file or click to browse

Parquet, Avro, CSV, TSV, JSON, JSONL — read locally to infer the schema, never uploaded

Frequently asked questions

What does this generate?
From a file's inferred schema it produces a CREATE TABLE statement, a warehouse load command (Snowflake COPY INTO, BigQuery LOAD DATA, Redshift COPY, or Postgres \copy), a dbt schema.yml, and a dbt staging model — for Snowflake, BigQuery, Redshift and Postgres.
How are DuckDB types mapped to my warehouse?
Each DuckDB type (from reading the file) is mapped to a sensible per-dialect equivalent — e.g. BIGINT becomes NUMBER(38,0) in Snowflake, INT64 in BigQuery, BIGINT in Redshift. Decimals keep their precision/scale; nested types fall back to VARIANT/JSON/SUPER. Treat them as a strong starting point, not gospel.
Is my file uploaded?
No. The schema is inferred in your browser with DuckDB-WASM. Only the column names and types are used to build the SQL — your data never leaves your device.
Do the load commands work as-is?
They're templates: the table and column mapping are filled in, but stages, buckets and IAM roles are placeholders you replace. Postgres has no native Parquet loader, so that path suggests converting to CSV first (this site's Converter does that in-browser).