POSTGRESQL 13–17 / SCHEMA COMPARE & SYNC

PostgreSQL schema sync.
Every difference, in focus.

See which tables, indexes, views, and functions differ between environments. Select your changes, review dependency-ordered SQL, and apply with transaction-aware execution phases.

Choose your license
14-DAY TRIAL

Meet your next workflow.

Choose the installer for your computer.

On a Mac, check Apple menu → About This Mac for your chip.

Trial installers are not available here yet. Please check back for the download.

$10.95 monthly or $99 yearly One developer, up to two devices

The schema cross-sectionWORKFLOW STUDY
The schema cross-sectionA cutaway of PostgreSQL tables, indexes, and views isolates a selected column difference and the SQL to review.TABLES / public.ordersINDEXES / orders_pkeyVIEWS / active_orders+ status : textREVIEW THE SELECTED DIFFERENCEALTER TABLE orders ADD status text;LIVE OBJECTS

PostgreSQL / inspect a difference before applying it.

Illustration / example workflow
Schema comparison · illustrative PostgreSQL objects
BUILT FOR POSTGRESQL ARCHITECTURE

Confidence in every DDL change.

From ad-hoc hotfixes to coordinated environment migrations, dbmigrate inspects live PostgreSQL catalogs without guessing.

Transactional DDL Rollback

PostgreSQL supports transactional schema updates. dbmigrate groups statements into atomic phases. If a constraint or type alteration fails, the entire transaction rolls back automatically, leaving zero partial drift behind.

BEGIN;
ALTER TABLE app.orders ADD COLUMN status varchar(32) NOT NULL DEFAULT 'pending';
CREATE INDEX idx_orders_status ON app.orders (status);
COMMIT; -- Rolls back entirely if any statement fails

Selective Object Sync

Cherry-pick exact tables, columns, indexes, enum types, sequences, views, triggers, and functions. dbmigrate automatically determines creation and alteration order based on foreign key and view dependencies.

-- Objects staged with dependency graph
1. custom enum: order_status_type
2. parent table: app.customers
3. child table: app.orders (FK → customers)

Referential Data Subsetting

Refresh development or staging databases with realistic production slices. Apply a WHERE filter (e.g., specific tenant or date range) and dbmigrate copies referenced parent and dependent child rows in valid foreign-key sequence.

SELECT * FROM app.orders WHERE created_at >= '2026-01-01';
→ Automatically fetches related customers and order_items

In-Memory PII & PHI Masking

Protect customer identities when refreshing lower environments. Apply deterministic masking to email addresses, names, and phone numbers in workstation memory before writing to target tables, preserving relationship joins across tables.

customer.email: [email protected]
masked value: [email protected] (Deterministic seed)
LIVE SCHEMA DIFF & DDL BUILDER

Interactive Schema Diff Playground

Simulate schema divergences in real time. Add or modify columns, switch database engines, and inspect the verified, dependency-ordered DDL synchronization script.

app.orders
ColumnData TypeStatus
idPKbigint
customer_idFKbigint
created_attimestamp with time zone
statusvarchar(32)
metadatajsonb
Add Schema Column
Generated Synchronization SQL2 Added · 0 Modified
-- dbmigrate generated PostgreSQL synchronization plan
-- Protection tier: Safe Transactional DDL
BEGIN;

ALTER TABLE app.orders
  ADD COLUMN status varchar(32) DEFAULT 'pending' NOT NULL;
ALTER TABLE app.orders
  ADD COLUMN metadata jsonb;

-- Create index on added column
CREATE INDEX idx_app_orders_status
  ON app.orders (status);

COMMIT;
-- End of PostgreSQL transactional execution phase
POSTGRESQL DETAILS

Frequently asked questions.

Which PostgreSQL versions does dbmigrate support?

dbmigrate supports PostgreSQL versions 13, 14, 15, 16, and 17. This includes self-hosted PostgreSQL installations on Linux, Docker, or bare metal, as well as managed cloud instances including AWS RDS, Amazon Aurora PostgreSQL, Supabase, Neon, Google Cloud SQL, and Azure Database for PostgreSQL.

How does transactional DDL rollback protect PostgreSQL deployments?

PostgreSQL supports transactional Data Definition Language (DDL). dbmigrate organizes migration operations into transactional phases wrapped in BEGIN and COMMIT blocks. If any statement or constraint fails during execution, PostgreSQL automatically rolls back the entire phase to prevent partial schema drift. Operations requiring non-transactional execution (such as CREATE INDEX CONCURRENTLY) are staged and reviewed in dedicated execution phases.

Can dbmigrate copy selected rows while maintaining foreign key integrity?

Yes. dbmigrate analyzes foreign key relationships between tables. When you copy rows filtered by a WHERE clause (e.g., WHERE created_at >= NOW() - INTERVAL '30 days'), it automatically identifies and copies referenced parent rows and dependent child rows in correct dependency order, avoiding foreign key constraint violations.

How does in-memory PII masking work for PostgreSQL data transfers?

When copying sensitive data from a production or pre-production database to lower environments like Dev or Sandbox, dbmigrate transforms values in local workstation memory before sending them over the wire. Masking rules support deterministic email and name generation, salted hashes, and custom regex replacements without transmitting data to any cloud AI service.

START COMPARING POSTGRESQL TODAY

Less guesswork.
More forward.

Experience side-by-side PostgreSQL schema comparison and referential data copying with a 14-day free trial.

POSTGRESQL 13 – 1714 days

Explore dbmigrate on your desktop.

  • Selective schema comparison & sync
  • Transactional DDL phases
  • Referential data copy with filters
  • Local AES-256-GCM encrypted state
14-DAY TRIAL

Meet your next workflow.

Choose the installer for your computer.

On a Mac, check Apple menu → About This Mac for your chip.

Trial installers are not available here yet. Please check back for the download.

macOS (Apple Silicon & Intel) / Windows x64