Propagate project options
All your rules are applied to all tables automatically.
See how it works βDefaults you almost never change. Project-wide rules for when you do. Per-table overrides for the one table that's different from all the others. Granular when it counts.
snake_caseadaptiveautoworkers: 8filter: active biginttexttimestamptzRules that stay usable
Use project-wide rules for the common path, then scope a mapping, naming, filtering, or loading override to the table that needs different treatment.

One place to set the rules that apply to every table: Conversion, Performance, Mapping, Databases, Logging, and Troubleshooting. Set once, applied everywhere.

That one giant table that needs special handling? Override the project rules just for it. The other 200 tables don't have to care.

All your rules are applied to all tables automatically.
See how it works βSpecify your own custom filter SQL expressions.
See how it works βSee the exact create table statement for the target database.
See how it works βThe exception-management problem
Most of a migration should be boring. Names map predictably, ordinary types take the fast path, and hundreds of tables follow the same project rules. Then the exceptions appear: a legacy name the target cannot keep, a table that needs filtering, an existing target contract, a type with business meaning, or a distribution choice that changes query performance.
The wrong response is to make every table manual. The other wrong response is to force the exception through a global rule and quietly change objects that were already correct.
Define the common policy once, make exceptions at the narrowest useful scope, and keep every departure from the baseline visible and reviewable.
You are here whenβ¦
Schema names, table names, column names, or types must match an established platform contract rather than mirror the source literally.
A table requires a source-side filter, a subset of rows, or a deliberate selection rule tied to the migration scope.
An oversized table, existing target, partitioning scheme, or warehouse distribution strategy needs treatment that should not affect the rest of the project.
Automatic tools move quickly until the first exception. Scripted tools handle anything but require every table to become an exception. Teams end up maintaining parallel configuration paths and hoping the global and custom logic still agree.
Set conversion, performance, creation, mapping, and logging behavior once, then let ordinary tables inherit it. Switch only the exceptional table to manual control for names, types, filters, existing-target links, or partitioning, and preview the target DDL before rows move.
Use this capability when
Progress you can see
Common behavior lives once at project scope instead of being copied across hundreds of objects.
Table-level choices stand out as deliberate contracts that can be reviewed and tested independently.
Change the table that differs without weakening the baseline for every table that does not.
The goal is not infinite knobs. It is the narrowest useful place to express a real business rule, with a generated target contract the team can inspect before execution.
Bring a real source and target. We'll scope the migration and show you live throughput on your data.