Postgresql:仅将某些表的数据从生产数据库复制到开发数据库

Postgressql: copy data from prod database to dev database for some tables only

我的任务是将一些 table 从生产环境复制到开发环境。这些 table 显然排除了任何 user/account 相关的 table。数据库位于单独的 RDS 实例中。数据库是 datawarehouse_productiondatawarehouse_development

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

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

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

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

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

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

我也试过将数据从 prod tables 导出到 CSV,然后将它们加载到 dev tables 但是它同样慢。

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

编辑 2: 终于成功了。这是备份设置 window:

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

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