faker

插入生成的测试伪造数据,Python库的包装

概览

扩展包名版本分类许可证语言
faker0.5.3LANGPostgreSQLPython
ID扩展名BinLibLoadCreateTrustReloc模式
3210faker-
相关扩展plpython3u plpython3u pgtap dbt2 jsonb_plpython3u ltree_plpython3u hstore_plpython3u random pg_tle

Requires PL/Python3 and Python Faker; the PIGSTY DEB carries a PG17+ parser compatibility patch.

版本

类型仓库版本PG 大版本包名依赖
EXTMIXED0.5.31817161514fakerplpython3u
RPMPGDG0.5.31817161514postgresql_faker_$v-
DEBPIGSTY0.5.31817161514postgresql-$v-fakerpostgresql-plpython3-$v, python3-fake-factory
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
PGDG 0.5.3
el8.aarch64
PGDG 0.5.3
PGDG 0.5.3
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 0.5.3
PIGSTY 0.5.3
PIGSTY 0.5.3
PIGSTY 0.5.3
PIGSTY 0.5.3
u24.x86_64
u24.aarch64
PIGSTY 0.5.3
PIGSTY 0.5.3
PIGSTY 0.5.3
PIGSTY 0.5.3
PIGSTY 0.5.3
u26.x86_64
u26.aarch64

构建

您可以使用 pig build 命令构建 faker 扩展的 DEB 包:

pig build pkg faker         # 构建 DEB 包

安装

您可以直接安装 faker 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install faker;          # 当前活跃 PG 版本安装
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
apt install -y postgresql-18-faker   # PG 18
apt install -y postgresql-17-faker   # PG 17
apt install -y postgresql-16-faker   # PG 16
apt install -y postgresql-15-faker   # PG 15
apt install -y postgresql-14-faker   # PG 14

创建扩展

CREATE EXTENSION faker CASCADE;  -- 依赖: plpython3u

用法

faker: Python Faker 库的包装器

faker 是一个 PostgreSQL 扩展,封装了 Python 的 Faker 库,提供在 SQL 查询中直接生成逼真假数据的函数。它需要 plpython3u

CREATE EXTENSION faker;

生成假数据

SELECT faker.name();           -- 'John Smith'
SELECT faker.first_name();     -- 'Jane'
SELECT faker.last_name();      -- 'Doe'
SELECT faker.email();          -- 'jane.doe@example.com'
SELECT faker.address();        -- '123 Main St, Anytown, US 12345'
SELECT faker.company();        -- 'Smith LLC'
SELECT faker.phone_number();   -- '(555) 123-4567'
SELECT faker.text();           -- 随机文本段落
SELECT faker.city();           -- 'Portland'
SELECT faker.country();        -- 'United States'

注意:faker.date()faker.time() 不可用,因为 datetime 是 PostgreSQL 保留关键字。请改用 faker.date_between()faker.date_this_century()

用假数据填充表

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);

本地化假数据

语言环境按会话设置,而非按函数调用:

SELECT faker.faker('de_DE');   -- 为当前会话设置语言环境
SELECT faker.name();           -- 返回德语名字
SELECT faker.address();        -- 返回德语地址

唯一值

使用 unique_ 前缀确保会话内值唯一:

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

查看所有函数

SELECT faker._functions();     -- 列出所有 500+ 个可用函数

所有 faker 函数返回 text 类型。如需其他类型请显式转换。

常用 Faker 提供器

函数说明
faker.name()全名
faker.first_name()
faker.last_name()
faker.email()电子邮件地址
faker.company_email()公司邮箱
faker.phone_number()电话号码
faker.address()完整地址
faker.city()城市名
faker.country()国家名
faker.company()公司名
faker.text()随机文本
faker.date_this_century()随机日期
faker.ssn()社会安全号码
faker.ean()EAN 条形码