faker
插入生成的测试伪造数据,Python库的包装
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
faker | 0.5.3 | LANG | PostgreSQL | Python |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3210 | faker | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | plpython3u pgtap dbt2 jsonb_plpython3u ltree_plpython3u hstore_plpython3u random pg_tle |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 0.5.3 | 1817161514 | faker | - |
| RPM | PGDG | 0.5.3 | 1817161514 | postgresql_faker_$v | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PGDG 0.5.3 el8.x86_64.pg18 : postgresql_faker_18 postgresql_faker_18-0.5.3-7PGDG.rhel8.x86_64.rpm
| PGDG 0.5.3 el8.x86_64.pg17 : postgresql_faker_17 postgresql_faker_17-0.5.3-6PGDG.rhel8.x86_64.rpm
| PGDG 0.5.3 el8.x86_64.pg16 : postgresql_faker_16 postgresql_faker_16-0.5.3-3PGDG.rhel8.x86_64.rpm
| PGDG 0.5.3 el8.x86_64.pg15 : postgresql_faker_15 postgresql_faker_15-0.5.3-1.rhel8.x86_64.rpm
| PGDG 0.5.3 el8.x86_64.pg14 : postgresql_faker_14 postgresql_faker_14-0.5.3-1.rhel8.x86_64.rpm
postgresql_faker_14-0.4.0-1.rhel8.noarch.rpm
|
| el8.aarch64 | PGDG 0.5.3 el8.aarch64.pg18 : postgresql_faker_18 postgresql_faker_18-0.5.3-7PGDG.rhel8.aarch64.rpm
| PGDG 0.5.3 el8.aarch64.pg17 : postgresql_faker_17 postgresql_faker_17-0.5.3-6PGDG.rhel8.aarch64.rpm
| PGDG 0.5.3 el8.aarch64.pg16 : postgresql_faker_16 postgresql_faker_16-0.5.3-3PGDG.rhel8.aarch64.rpm
| PGDG 0.5.3 el8.aarch64.pg15 : postgresql_faker_15 postgresql_faker_15-0.5.3-1.rhel8.aarch64.rpm
| PGDG 0.5.3 el8.aarch64.pg14 : postgresql_faker_14 postgresql_faker_14-0.5.3-1.rhel8.aarch64.rpm
|
| el9.x86_64 | PGDG 0.5.3 el9.x86_64.pg18 : postgresql_faker_18 postgresql_faker_18-0.5.3-7PGDG.rhel9.x86_64.rpm
| PGDG 0.5.3 el9.x86_64.pg17 : postgresql_faker_17 postgresql_faker_17-0.5.3-6PGDG.rhel9.x86_64.rpm
| PGDG 0.5.3 el9.x86_64.pg16 : postgresql_faker_16 postgresql_faker_16-0.5.3-3PGDG.rhel9.x86_64.rpm
| PGDG 0.5.3 el9.x86_64.pg15 : postgresql_faker_15 postgresql_faker_15-0.5.3-1.rhel9.x86_64.rpm
| PGDG 0.5.3 el9.x86_64.pg14 : postgresql_faker_14 postgresql_faker_14-0.5.3-1.rhel9.x86_64.rpm
postgresql_faker_14-0.5.3-1.rhel9.noarch.rpm
|
| el9.aarch64 | PGDG 0.5.3 el9.aarch64.pg18 : postgresql_faker_18 postgresql_faker_18-0.5.3-7PGDG.rhel9.aarch64.rpm
| PGDG 0.5.3 el9.aarch64.pg17 : postgresql_faker_17 postgresql_faker_17-0.5.3-6PGDG.rhel9.aarch64.rpm
| PGDG 0.5.3 el9.aarch64.pg16 : postgresql_faker_16 postgresql_faker_16-0.5.3-3PGDG.rhel9.aarch64.rpm
| PGDG 0.5.3 el9.aarch64.pg15 : postgresql_faker_15 postgresql_faker_15-0.5.3-1.rhel9.aarch64.rpm
| PGDG 0.5.3 el9.aarch64.pg14 : postgresql_faker_14 postgresql_faker_14-0.5.3-1.rhel9.aarch64.rpm
|
| el10.x86_64 | PGDG 0.5.3 el10.x86_64.pg18 : postgresql_faker_18 postgresql_faker_18-0.5.3-7PGDG.rhel10.x86_64.rpm
| PGDG 0.5.3 el10.x86_64.pg17 : postgresql_faker_17 postgresql_faker_17-0.5.3-7PGDG.rhel10.x86_64.rpm
| PGDG 0.5.3 el10.x86_64.pg16 : postgresql_faker_16 postgresql_faker_16-0.5.3-7PGDG.rhel10.x86_64.rpm
| PGDG 0.5.3 el10.x86_64.pg15 : postgresql_faker_15 postgresql_faker_15-0.5.3-7PGDG.rhel10.x86_64.rpm
| PGDG 0.5.3 el10.x86_64.pg14 : postgresql_faker_14 postgresql_faker_14-0.5.3-7PGDG.rhel10.x86_64.rpm
|
| el10.aarch64 | PGDG 0.5.3 el10.aarch64.pg18 : postgresql_faker_18 postgresql_faker_18-0.5.3-7PGDG.rhel10.aarch64.rpm
| PGDG 0.5.3 el10.aarch64.pg17 : postgresql_faker_17 postgresql_faker_17-0.5.3-7PGDG.rhel10.aarch64.rpm
| PGDG 0.5.3 el10.aarch64.pg16 : postgresql_faker_16 postgresql_faker_16-0.5.3-7PGDG.rhel10.aarch64.rpm
| PGDG 0.5.3 el10.aarch64.pg15 : postgresql_faker_15 postgresql_faker_15-0.5.3-7PGDG.rhel10.aarch64.rpm
| PGDG 0.5.3 el10.aarch64.pg14 : postgresql_faker_14 postgresql_faker_14-0.5.3-7PGDG.rhel10.aarch64.rpm
|
| d12.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| d12.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| d13.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| d13.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u22.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u22.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u24.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u24.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG 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 是一个 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() 不可用,因为 date 和 time 是 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 条形码 |