Creating an ETL pipeline
- Go to Jobs → New Job
- Select ETL as the job type
- Follow the 4-step wizard:
- Source — choose the source connection and execution mode
- Destination — choose the destination connection and schema
- Tables — select which tables to sync; Zwiron auto-discovers them
- Settings — choose sync mode, destination write mode, schedule, retries
Source sync modes
See Sync Modes for a full comparison.
Destination write modes
Choosing between Append and Upsert for Incremental / CDC:
- Use Upsert when your source table has a primary key and rows can be updated. Upsert prevents duplicate rows when a row is re-read after being modified. Available for SQL databases.
- Use Append only when source rows are immutable — event logs, audit trails, activity feeds, or sources without a primary key (SaaS APIs, MongoDB, document stores). Appending to a table where rows can be updated will produce duplicates and may cause primary key conflicts.
Table selection
When you choose a source connection, Zwiron connects through your agent and automatically discovers all tables and schemas. You can:- Select individual tables
- Select entire schemas (all tables)
- Search by table name
- Manually enter table names if you prefer
Destination schema
When you create a job, Zwiron auto-generates the destination schema name from your source connection name. For example, if your source connection is called “Prod Postgres”, the destination schema will beprod_postgres.
This keeps each source isolated in the destination — each source gets its own namespace so multiple jobs sharing the same destination never collide.
You can override the schema name in the job’s advanced settings if needed. If the schema you choose overlaps with another active job’s tables, Zwiron shows a conflict warning — but it won’t block you.
Tables are created automatically in the destination if they don’t exist. Column names and types are mapped from source to destination types automatically.
Parallel execution
Zwiron can read and write multiple tables in parallel. The number of parallel workers is configured per job (default: auto). For large tables, Zwiron also partitions reads — splitting the table into chunks and reading them concurrently for maximum throughput.Retries
Each table sync is retried independently on failure. The default is 3 retries with exponential backoff. Configure the max retry count in the job’s advanced settings.Performance tips
- Use Incremental mode instead of Full Refresh for tables larger than ~500K rows
- Enable CDC for real-time requirements or when you need to capture deletes
- Add an index on your cursor column (
updated_at,id) for fast incremental reads - For Snowflake/BigQuery destinations, Zwiron uses bulk load — no row-by-row inserts
Related
- Reverse ETL — push data from warehouse back to operational systems
- Transforms — rename, filter, hash, and compute columns
- Schema Evolution — handle source schema changes gracefully
- Scheduling — configure when jobs run