pgclone

Clone PostgreSQL databases, schemas, tables, and functions across environments

Overview

PackageVersionCategoryLicenseLanguage
pgclone4.0.0ETLPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
9590pgcloneNoYesYesYesNoNo-
Relateddb_migrator pglogical repmgr pgactive

preload for async/progress

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY4.0.01817161514pgclone-
RPMPIGSTY4.0.01817161514pgclone_$v-
DEBPIGSTY4.0.01817161514postgresql-$v-pgclone-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
PIGSTY 4.0.0
PIGSTY 4.0.0
PIGSTY 4.0.0
PIGSTY 4.0.0
PIGSTY 4.0.0
u24.x86_64
u24.aarch64
PIGSTY 4.0.0
PIGSTY 4.0.0
PIGSTY 4.0.0
PIGSTY 4.0.0
PIGSTY 4.0.0

Build

You can build the RPM / DEB packages for pgclone using pig build:

pig build pkg pgclone         # build RPM / DEB packages

Install

You can install pgclone directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install pgclone;          # Install for current active PG version
pig ext install -y pgclone -v 18  # PG 18
pig ext install -y pgclone -v 17  # PG 17
pig ext install -y pgclone -v 16  # PG 16
pig ext install -y pgclone -v 15  # PG 15
pig ext install -y pgclone -v 14  # PG 14
dnf install -y pgclone_18       # PG 18
dnf install -y pgclone_17       # PG 17
dnf install -y pgclone_16       # PG 16
dnf install -y pgclone_15       # PG 15
dnf install -y pgclone_14       # PG 14
apt install -y postgresql-18-pgclone   # PG 18
apt install -y postgresql-17-pgclone   # PG 17
apt install -y postgresql-16-pgclone   # PG 16
apt install -y postgresql-15-pgclone   # PG 15
apt install -y postgresql-14-pgclone   # PG 14

Preload:

shared_preload_libraries = 'pgclone';

Create Extension:

CREATE EXTENSION pgclone;

Usage

Source: README, Usage guide, Async guide, Release v4.0.0, SQL install script

pgclone clones tables, schemas, functions, roles, and whole databases directly from SQL. In v4.0.0 the public API is namespaced under the pgclone schema.

Core clone functions

CREATE EXTENSION pgclone;

SELECT pgclone.table(
  'host=source-server dbname=mydb user=postgres password=secret',
  'public',
  'customers',
  true
);

SELECT pgclone.schema(
  'host=source-server dbname=mydb user=postgres password=secret',
  'sales',
  true
);

SELECT pgclone.database(
  'host=source-server dbname=mydb user=postgres password=secret',
  true
);
  • pgclone.table(...), pgclone.schema(...), pgclone.functions(...), pgclone.database(...)
  • pgclone.database_create(...) creates a local target database and clones into it.
  • _ex variants expose explicit booleans for indexes, constraints, and triggers.

Options and masking

  • JSON options support columns, where, conflict, and object toggles such as indexes, constraints, and triggers.
  • Upstream documents masking, auto-discovery of sensitive columns, static masking, dynamic masking, clone verification, and GDPR/compliance reporting in the usage guide.
SELECT pgclone.table(
  'host=source-server dbname=mydb user=postgres',
  'public', 'users', true, 'users_lite',
  '{"columns":["id","name","email"],"where":"status = ''active''"}'
);

Async and progress

-- postgresql.conf
shared_preload_libraries = 'pgclone'

SELECT pgclone.schema_async(
  'host=source-server dbname=mydb user=postgres',
  'sales', true, '{"parallel":4}'
);

SELECT * FROM pgclone.jobs_view;
SELECT pgclone.progress(1);
SELECT pgclone.cancel(1);
  • pgclone.table_async(...) and pgclone.schema_async(...) run in background workers.
  • pgclone.jobs_view, pgclone.progress_detail(), pgclone.resume(), and pgclone.clear_jobs() provide job tracking and recovery.

Caveats

  • Upstream requires PostgreSQL 14+.
  • The usage guide states the extension requires superuser privileges to install and use.
  • Async features need shared_preload_libraries = 'pgclone'; worker-pool parallelism also depends on max_worker_processes.

Last Modified 2026-04-19: update extension stub docs (9f178c3)