Postgressql:仅将某些表的数据从 prod 数据库复制到 dev 数据库

问题描述

我的任务是将一些表从 prod 环境复制到 dev 环境。这些表显然不包括任何用户/帐户相关的表。数据库位于单独的 RDS 实例中。数据库datawarehouse_productiondatawarehouse_development

我目前面临的问题是我正在使用 DBeaver 并且能够创建数据库转储,例如,当我尝试使用该转储并将其恢复到表“响应”时,我现在创建了一个转储开发环境,我收到一条错误消息:

pg_restore: error: Could not execute query: ERROR:  must be owner of relation responses

Command was: ALTER TABLE public.responses OWNER TO datawarehouse_production;

我什至无法打开该死的转储文件,因为它们是二进制文件。转储文件如下所示:

enter image description here

我希望摆脱那些查询,例如:Drop database datawarehouse_production 因为我想将数据复制到的数据库是 datawarehouse_development。

我知道 DBeaver 具有传输数据功能,但速度非常慢(20,000 行需要 50 分钟)。我已经将它用于较小的表,但是我需要复制的数据是 1100 万行。

我还尝试将数据从 prod 表导出到 CSV,然后将它们加载到 dev 表中,但它同样慢。

编辑: 添加 --data-only 标志后:

enter image description here

编辑 2: 终于设法使事情发挥作用。这是备份设置窗口:

enter image description here

并且在恢复转储时,必须在额外的命令标志字段中添加 --data-only 标志!

解决方法

您的数据库转储包含复制转储表的确切状态所需的大量信息,其中包括权限设置查询,例如正在爆炸的查询。如果您已经在本地拥有架构并且不想复制这些类型的东西,请尝试 pg_restore --data-only 将数据加载到您现有的架构中。