postgresql – Postgres仅转储dev快照的部分表

postgresql – Postgres仅转储dev快照的部分表,第1张

概述在生产时,我们的数据库大小只有几百GB.对于开发和测试,我们需要创建此数据库的功能相同的快照,但其大小只有10或20个. 挑战在于我们的业务实体的数据分散在许多表中.我们想要创建某种过滤的快照,以便只有一些实体包含在转储中.这样我们就可以每个月左右为开发和测试获取新的快照. 例如,假设我们拥有具有这些多对多关系的实体: >公司有N个部门 >分部有N名员工 >员工有N个出勤记录 可能有1000家公司 在生产时,我们的数据库大小只有几百GB.对于开发和测试,我们需要创建此数据库的功能相同的快照,但其大小只有10或20个.

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

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

>公司有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仅转储dev快照的部分表全部内容,希望文章能够帮你解决postgresql – Postgres仅转储dev快照的部分表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1170608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存