【发布时间】:2021-01-11 05:38:21
【问题描述】:
我的任务是将一些表从 prod 环境复制到 dev 环境。这些表显然不包括任何与用户/帐户相关的表。数据库位于单独的 RDS 实例中。数据库是datawarehouse_production 和datawarehouse_development。
我目前面临的问题是我正在使用 DBeaver 并且能够创建 DB 转储,例如,当我尝试使用该转储并将其恢复到开发环境,我收到一条错误消息:
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 分钟)。我将它用于较小的表,但我需要复制的数据是 1100 万行。
我还尝试将数据从 prod 表导出到 CSV,然后将它们加载到 dev 表中,但是速度同样慢。
并且在恢复转储时,必须在额外的命令标志字段中添加--data-only 标志!
【问题讨论】:
-
您的数据库转储包含复制转储表的确切状态所需的大量信息,其中包括权限设置查询,例如正在爆炸的查询。尝试
pg_restore --data-only忽略这些部分。或者,像github.com/ankane/pgsync 这样的工具可能是一种选择。 -
好的,我试试
-
请检查我的编辑是否有最新的错误。谢谢!
-
您在尝试打开并检查转储文件时是否更改过它? Google 上没有太多关于该错误消息的信息。
-
我做了一些谷歌搜索,发现在创建转储时在 DBeaver 窗口中将转储文件的格式更改为 TAR 而不是 CUSTOM 的建议。我这样做了,连同
--data-only标志一起,恢复工作了!您可以添加答案!
标签: postgresql pg-dump dbeaver