Target integration

PostgreSQL

The default SQL target. Supports the fastest bulk-load path of any target — COPY FROM STDIN into an empty table — plus a native JSONB column for anything that doesn't flatten cleanly.

Start free →

Connection requirements

  • A connection string (postgresql://) with CREATE TABLE and INSERT/COPY privileges on the target schema
  • SSL is used when the target supports it (Neon, RDS) and skipped automatically for plaintext-only local/internal targets

COPY on first load, upsert after

When the target table is empty, the bulk load uses PostgreSQL's COPY FROM STDIN — the fastest ingestion path Postgres offers, well ahead of row-by-row INSERT. A re-run against a table that already has rows falls back to a parameterized upsert (INSERT ... ON CONFLICT) so it stays idempotent.

Setup

1
Add the connection
Provide the PostgreSQL connection details under Connections → Add. NoSQLSync verifies it can connect before saving.
2
Pick a table name
Choose an existing table or let NoSQLSync create one from the inferred schema when the migration starts.
3
Start the migration
Bulk-load the historical data, then optionally enable CDC to keep the table current.

FAQ

Does NoSQLSync create the PostgreSQL table for me?

Yes. If the target table doesn't exist, it's created from the inferred schema before the first batch loads.

What happens if I re-run a migration that already has data in the target?

The bulk load switches to an idempotent upsert path instead of the empty-table fast path, so re-running is safe.

See every path migrating to PostgreSQL →