Replicate MS Access databases to PostgreSQL, MySQL, or SQL Server โ fast, accurate, single-binary. A Rust reimagining of the proven Python MS Access Replicator.
Learn MoreReplicator-NG copies your Microsoft Access database tables โ schema, data, indexes, and foreign keys โ into a server-grade database. Your .accdb file stays untouched. Your Access forms, reports, and VBA continue working. Your web apps, analytics tools, and reporting systems get real SQL access to your data.
.accdb. The original database remains the single source of truth. The replica is a read-optimised copy you can query, join, and report against without touching Access.
Tables, columns, data types, primary keys, indexes, and foreign keys โ all replicated with correct type mapping for PostgreSQL, MySQL, and SQL Server.
Tables are copied in dependency order โ parent tables first, then children. Foreign key constraints are created before data loads, so referential integrity is maintained throughout.
After the initial copy, subsequent runs only sync changes. Tables with primary keys use PostgreSQL UPSERT (ON CONFLICT DO UPDATE). Append-only tables copy only new rows.
Detects rows deleted in Access and removes them from the target database. Processes tables in FK dependency order to respect cascade delete constraints.
Mark tables that rarely change as nonvolatile. Replicator-NG skips them when row counts match โ saving time on large, static reference tables.
One .exe file. No Python, no dependencies, no virtual environments. Drop it on any Windows machine with MS Access and a target database โ it just works.
Replicator-NG connects to your Access database via DAO (Data Access Objects) โ the same COM engine that powers Access itself โ and writes directly to your target database using native drivers:
| Step | What Happens |
|---|---|
| 1. Discover | Opens the .accdb via DAO COM, enumerates all user tables, columns, data types, primary keys, indexes, and foreign keys |
| 2. Schema | Generates CREATE TABLE DDL with correct type mappings โ dbLong โ BIGINT, dbText(50) โ VARCHAR(50), dbCurrency โ DECIMAL(19,4), etc. |
| 3. Copy | Reads every row from Access via DAO Recordset, converts values to target SQL literals, and INSERTs them into the target database โ base tables first, FK tables in dependency order |
| 4. Sync | On subsequent runs: UPSERT changed rows, skip unchanged nonvolatile tables, detect and DELETE orphaned rows from the target |
| 5. Validate | Compares row counts between Access and the target database for every table, reports mismatches |
Phase 1 complete โ CLI binary with full PostgreSQL feature parity. Verified on Windows against Northwind.accdb (233 rows, 9 tables).
| Phase | Version | Scope | Status |
|---|---|---|---|
| Phase 1 โ Core Engine | 0.1.0 | CLI binary, PostgreSQL backend, full schema + data replication, incremental sync, sync-deleted, nonvolatile | โ Complete |
| Phase 2 โ GUI & Installer | 0.2.0 | Windows GUI, config editor, scheduler integration, Inno Setup installer | โ Planned |
| Phase 3 โ Multi-target & Licensing | 0.3.0 | MySQL, SQL Server backends, licence key activation | โ Planned |
| Target | License | Notes |
|---|---|---|
| PostgreSQL | Freeware | Full functionality, no restrictions. Use it forever, no activation required. |
| MySQL / MariaDB | Paid (annual) | Per-machine licence key with activation. Includes updates and support. |
| SQL Server | Paid (annual) | Natural pairing โ Access front-end, SQL Server back-end. High-value enterprise target. |
Replicator-NG is a drop-in replacement for the Python pg_replicator.py. Every CLI flag is ported โ -c/--config, -s/--source, -l/--list, -n/--network, --dump, --schema, --full-refresh, --sync-deleted, --nonvolatile, --slow, --output, and more. Config files use the same YAML format.
| Python | Replicator-NG |
|---|---|
python pg_replicator.py -c config.yaml | replicator-ng.exe -c config.yaml |
python pg_replicator.py -l -s data.accdb | replicator-ng.exe -l -s data.accdb |
python pg_replicator.py --schema | replicator-ng.exe --schema |
python pg_replicator.py --sync-deleted | replicator-ng.exe --sync-deleted |