faker

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

概览

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

版本

类型仓库版本PG 大版本包名依赖
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

安装

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

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

使用 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

创建扩展

CREATE EXTENSION faker;

用法

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 条形码

最后修改 2026-03-14: update extension metadata (953cbd0)