5个版本 (2个稳定版)
1.2.0 | 2023年11月2日 |
---|---|
1.0.0 | 2023年3月16日 |
0.4.3 | 2022年10月26日 |
0.3.1 | 2022年3月9日 |
0.3.0 | 2022年3月8日 |
#532 in 数据库接口
43KB
1.5K SLoC
pg_parcel
考虑多租户的非常精简的pg_dump --data-only
子集。解决https://postgrespro.com/list/thread-id/1715772的问题。
大多数选项通过配置文件指定。
column_name = "customer_id"
schema_name = "public"
database_url = "postgres://127.0.0.1:15432/postgres"
features = ["currency", "audit"]
skip_tables = [
"_backup$",
"^obsolete_"
# ... more regular expressions
]
[overrides]
# We only want the one customer identified by --id on the command line
customers = """
select * from customers where id in :ids
"""
# The `user_files` table doesn't have a customer_id column, so we need to join.
user_files = """
select user_files.*
from users_files
join users on users.id = user_files.user_id
where users.customer_id in :ids
"""
daily_exchange_rates = """
select * from daily_exchange_rates
where 'currency' = any (current_setting('pg_parcel.features')::text[])
"""
audit_log = """
select * from audit_log
where customer_id in :ids and
(
ARRAY['audit'] && (current_setting('pg_parcel.features')::text[])
or created_at >= NOW() - INTERVAL '30 days'
or updated_at >= NOW() - INTERVAL '30 days'
);
"""
会话变量 | 包含 |
---|---|
pg_parcel.ids |
传递给--id 的所有值的列表 |
pg_parcel.features |
在pg_parcel.toml 文件中定义的功能列表,减去使用--no-feature 关闭的功能。如果设置了--features ,则它们优先于配置文件,但--no-features 是最终的。 |
pg_partial.feature. myfeature |
与pg_parcel.features 相同的规则,但每个设置一个变量。值只是true 。覆盖查询仍然可以使用IN :ids ,但现在会话变量更受青睐。 |
演示
版本
我们为Linux x86_64 (任何发行版,使用musl)和macOS通用(Intel和Apple硅统一二进制文件)发布二进制文件。
要创建新版本,更新Cargo.toml
并创建一个类似v1.2.3
的标签(SemVer,前缀为v
)。
许可证
根据以下之一授权:
- Apache许可证版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,将按上述方式双许可,不附加任何额外条款或条件。
依赖项
~22–36MB
~678K SLoC