Targets
Targets and load methods
Where loaded tables go, and how data gets there: files the warehouse reads itself, stages and bulk COPY.
The fastest load is rarely reading rows and inserting them. It’s letting the warehouse bulk-load
files: straight from your bucket or folder when the data is already in files, or from a stage that
SQLLoad fills with Parquet. SQLLoad picks that route wherever it loads the data exactly, and plan
names the route for every table.
How data gets in
Section titled “How data gets in”| Data | Into DuckDB | Into Snowflake | Into Databricks |
|---|---|---|---|
| Parquet files in S3 or a folder | DuckDB reads them with read_parquet |
COPY from an external stage over the bucket |
Staged by SQLLoad in the volume, then COPY INTO |
| CSV, JSON, NDJSON files | Read by SQLLoad, appended as Arrow | COPY from an external stage over the bucket |
Read by SQLLoad, staged as Parquet in the volume, then COPY INTO |
| Postgres or Python rows | Appended as Arrow | Written as Parquet to the load_method’s stage, then COPY (or streamed or inserted, if the load_method says so) |
Written as Parquet to the volume, then COPY INTO |
There are no silent fallbacks. If the route a table needs can’t be used, plan fails for that
table and says how to fix it.
Targets
Section titled “Targets”A target is where loaded tables go. It names a connection and where tables are placed in it. A
project can have several targets, for example one per environment; each source loads into its
destination, or the project’s default_target.
Connection kind |
Target writes | Places tables with |
|---|---|---|
snowflake |
Snowflake tables | loader_schema, and optionally database |
databricks |
Unity Catalog tables | loader_schema, in the connection’s catalog |
duckdb |
DuckDB tables | loader_schema |
s3, filesystem |
Parquet files, one folder per table | path |
Warehouse targets
Section titled “Warehouse targets”A Snowflake, Databricks or DuckDB target places tables in a schema:
[connections.warehouse]kind = "duckdb"database = "shop.duckdb"
[targets.local]connection = "warehouse"loader_schema = "raw"| Key | Meaning |
|---|---|
connection |
A snowflake or duckdb connection. |
loader_schema |
The schema for tables whose source sets no schema. Required. |
database |
Overrides the connection’s database. |
A source’s schema overrides loader_schema for its tables. A DuckDB connection’s database is
a file path, or :memory:. A Snowflake connection also needs a load_method; see
Snowflake.
Each kind has its own page: Snowflake, Databricks, DuckDB and Parquet files.