我正在开发一种快速的方法来克隆数据库以测试应用程序。我的数据库中有一些特定的表非常大(+50GB(,但绝大多数表只有几个MB。在我当前的服务器上,转储+恢复需要几个小时。这些bigs表有日期字段。
考虑到上下文,我的问题是:是否可以对表行使用某种类型的限制来选择要转储的数据?例如,在表X上,只转储日期为Y的行。
如果这是一个可能的节目,我能做吗?如果不可能,还有什么好的选择?
您可以使用COPY SELECT whatever FROM yourtable WHERE ... TO '/some/file'
来限制导出内容。
COPY
命令
您可以使用行级安全性,并创建一个策略,使转储数据库用户只能看到您想要转储的行(确保该用户既不是超级用户,也不是表的所有者,因为这些用户不受行级安全保护(。
然后使用pg_dump
的--enable-row-security
选项将数据库转储给该用户。