gpt4 book ai didi

postgresql - 仅部分表的 Postgres 转储用于开发快照

转载 作者:行者123 更新时间:2023-11-29 11:04:52 25 4
gpt4 key购买 nike

在生产环境中,我们的数据库有几百 GB 的大小。对于开发和测试,我们需要创建功能相同但大小仅为 10 或 20 GB 的该数据库的快照。

挑战在于我们业务实体的数据分散在许多表中。我们想要创建某种过滤快照,以便只有 一些 实体包含在转储中。这样我们就可以每个月左右获取新的快照以用于开发和测试。

例如,假设我们有具有这些多对多关系的实体:

  • 公司有N个部门
  • 部门有N名员工
  • 员工有N条考勤记录

可能有1000家公司,2500个部门,175000名员工,数千万的考勤记录。我们想要一种可复制的方式来提取前 100 家公司及其所有组成部门、员工和出勤记录

我们目前对模式使用 pg_dump,然后使用 --disable-triggers 和 --data-only 运行 pg_dump 以从较小的表中获取所有数据。我们不想编写自定义脚本来提取部分数据,因为我们的开发周期很快,并且担心自定义脚本很脆弱并且可能会过时。

我们如何做到这一点?是否有第三方工具可以帮助从数据库中提取逻辑分区?这些工具叫什么?

任何一般性建议也很感激!

最佳答案

在较大的表上,您可以使用 COPY 命令提取子集...

COPY (SELECT * FROM mytable WHERE ...) TO '/tmp/myfile.tsv'

COPY mytable FROM 'myfile.tsv'

https://www.postgresql.org/docs/current/static/sql-copy.html

您应该考虑维护一组开发数据,而不是仅仅提取生产的一个子集。在编写单元测试的情况下,您可以使用测试所需的相同数据,尝试覆盖所有可能的用例。

关于postgresql - 仅部分表的 Postgres 转储用于开发快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1745105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com