【问题标题】:Postgressql: copy data from prod database to dev database for some tables onlyPostgresql:仅针对某些表将数据从 prod 数据库复制到 dev 数据库
【发布时间】:2021-01-11 05:38:21
【问题描述】:

我的任务是将一些表从 prod 环境复制到 dev 环境。这些表显然不包括任何与用户/帐户相关的表。数据库位于单独的 RDS 实例中。数据库是datawarehouse_productiondatawarehouse_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 标志后:

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

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

【问题讨论】:

  • 您的数据库转储包含复制转储表的确切状态所需的大量信息,其中包括权限设置查询,例如正在爆炸的查询。尝试pg_restore --data-only 忽略这些部分。或者,像github.com/ankane/pgsync 这样的工具可能是一种选择。
  • 好的,我试试
  • 请检查我的编辑是否有最新的错误。谢谢!
  • 您在尝试打开并检查转储文件时是否更改过它? Google 上没有太多关于该错误消息的信息。
  • 我做了一些谷歌搜索,发现在创建转储时在 DBeaver 窗口中将转储文件的格式更改为 TAR 而不是 CUSTOM 的建议。我这样做了,连同--data-only 标志一起,恢复工作了!您可以添加答案!

标签: postgresql pg-dump dbeaver


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多