Features

Sync-deleted, nonvolatile tables, simple names, views, and MS Access adjustments.

Sync-Deleted

Detects rows that have been deleted in MS Access and removes them from PostgreSQL.

replicator-ng -c config.toml --sync-deleted

How It Works

  1. Tables are processed in FK dependency order — child tables first, then parents (prevents cascade-delete constraint violations)
  2. For each table, rows are fetched from PostgreSQL in keyed batches
  3. Each batch is checked against Access: SELECT COUNT(*) FROM [Table] WHERE pk = ?
  4. Rows not found in Access are deleted from PostgreSQL

The --slow Option

By default, sync-deleted only processes tables where Access and PostgreSQL row counts differ. With --slow, every table is processed regardless:

replicator-ng -c config.toml --sync-deleted --slow

Requirements

⚠️ Order matters. Sync-deleted processes child tables first to avoid FK violations. If a parent row is deleted first, the child rows would violate the foreign key constraint.

Nonvolatile Tables

Skip tables whose data hasn't changed since the last replication run.

Configuration

Mark tables as nonvolatile in your config:

nonvolatile = ["PostalCodes", "Regions", "ProductCategories"]

Or tick the Nonvolatile checkbox in the GUI's Tables panel.

How It Works

  1. Before copying, the Access row count is compared to the PostgreSQL row count
  2. If counts match → table is skipped entirely (assumes unchanged)
  3. If counts differ → table is copied as normal

No hashes or stored state — just a simple row-count comparison each run. Matches pg_replicator.py behaviour exactly.

Use --slow to override — copy all tables regardless of row-count match.

💡 Best for reference data. Nonvolatile is ideal for lookup tables, postal codes, product categories — any table that rarely changes but may be large. Avoid marking transactional tables as nonvolatile.

Simple Names

Create lowercase table and column names without quoted identifiers.

replicator-ng -c config.toml --schema --simple-names

What It Does

🎯 Why use it? PostgreSQL folds unquoted identifiers to lowercase. If your Access tables have mixed case or spaces (e.g., "Order Details"), you'd need to quote them in every query. Simple names eliminate this — order_details just works.

Create Views

Generate readable views on top of replicated tables.

replicator-ng -c config.toml --create-views

Creates a view_TABLENAME for each replicated table. Views select all columns with human-friendly aliases and can apply transformations.


Adjust MS Access

⚠ WARNING — This option modifies your Access database.

The --adjust-ms-access flag creates indexes directly in your .accdb / .mdb file. Take a full backup of your database before running this command. While the changes are safe (only adding indexes), there is no undo — and a database analyst should verify that added indexes don't negatively impact Access performance.

Add missing indexes to the Access database to support foreign key relationships.

replicator-ng -c config.toml --adjust-ms-access

What It Does

MS Access relationships don't always have the indexes that PostgreSQL foreign keys require. This mode:

⚠️ This modifies your Access database. The changes are safe (only adding indexes), but you should back up your database first. A database analyst should verify that added indexes don't negatively impact Access performance.

This is primarily useful before the initial replication — once indexes exist, the replicator can create proper FK constraints in PostgreSQL.