faker

Wrapper for the Faker Python library

Overview

PackageVersionCategoryLicenseLanguage
faker0.5.3LANGPostgreSQLPython
IDExtensionBinLibLoadCreateTrustRelocSchema
3210fakerNoYesNoYesNoNo-
Relatedplpython3u pgtap dbt2 jsonb_plpython3u ltree_plpython3u hstore_plpython3u random pg_tle

Version

TypeRepoVersionPG VerPackageDeps
EXTPGDG0.5.31817161514faker-
RPMPGDG0.5.31817161514postgresql_faker_$v-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 0.5.3
el8.aarch64
PGDG 0.5.3
PGDG 0.5.3
el9.x86_64
PGDG 0.5.3
el9.aarch64
PGDG 0.5.3
PGDG 0.5.3
el10.x86_64
el10.aarch64
PGDG 0.5.3
PGDG 0.5.3
PGDG 0.5.3
PGDG 0.5.3
PGDG 0.5.3
d12.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS

Install

You can install faker directly. First, make sure the PGDG repository is added and enabled:

pig repo add pgdg -u          # Add PGDG repo and update cache

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

pig install faker;          # Install for current active PG version
pig ext install -y faker -v 18  # PG 18
pig ext install -y faker -v 17  # PG 17
pig ext install -y faker -v 16  # PG 16
pig ext install -y faker -v 15  # PG 15
pig ext install -y faker -v 14  # PG 14
dnf install -y postgresql_faker_18       # PG 18
dnf install -y postgresql_faker_17       # PG 17
dnf install -y postgresql_faker_16       # PG 16
dnf install -y postgresql_faker_15       # PG 15
dnf install -y postgresql_faker_14       # PG 14

Create Extension:

CREATE EXTENSION faker;

Usage

faker: Wrapper for the Faker Python library

faker is a PostgreSQL extension that wraps Python’s Faker library, providing functions to generate realistic fake data directly in SQL queries. It requires plpython3u.

CREATE EXTENSION faker;

Generate Fake Data

SELECT faker.name();           -- 'John Smith'
SELECT faker.first_name();     -- 'Jane'
SELECT faker.last_name();      -- 'Doe'
SELECT faker.email();          -- '[email protected]'
SELECT faker.address();        -- '123 Main St, Anytown, US 12345'
SELECT faker.company();        -- 'Smith LLC'
SELECT faker.phone_number();   -- '(555) 123-4567'
SELECT faker.text();           -- random paragraph of text
SELECT faker.city();           -- 'Portland'
SELECT faker.country();        -- 'United States'

Note: faker.date() and faker.time() are not available because date and time are reserved PostgreSQL keywords. Use faker.date_between() or faker.date_this_century() instead.

Populate Tables with Fake Data

INSERT INTO users (name, email, address, created_at)
SELECT
  faker.name(),
  faker.email(),
  faker.address(),
  faker.date_this_century()::timestamp
FROM generate_series(1, 1000);

Localized Fake Data

Locale is set per session, not per function call:

SELECT faker.faker('de_DE');   -- set locale for this session
SELECT faker.name();           -- returns a German name
SELECT faker.address();        -- returns a German address

Unique Values

Use the unique_ prefix to guarantee unique values within a session:

SELECT faker.unique_name();
SELECT faker.unique_email();

Discover All Functions

SELECT faker._functions();     -- list all 500+ available functions

All faker functions return text. Cast explicitly for other types.

Common Faker Providers

FunctionDescription
faker.name()Full name
faker.first_name()First name
faker.last_name()Last name
faker.email()Email address
faker.company_email()Company email
faker.phone_number()Phone number
faker.address()Full address
faker.city()City name
faker.country()Country name
faker.company()Company name
faker.text()Random text
faker.date_this_century()Random date
faker.ssn()Social security number
faker.ean()EAN barcode

Last Modified 2026-03-12: add pg extension catalog (95749bf)