使用 Postgresql 中的生产数据更新暂存数据

dja*_*o09 5 postgresql psql postgresql-9.3 pg-dump

我在服务器上使用 PostgreSQL(版本 9.3),并且希望使用生产实例数据库中的数据更新暂存实例数据库中的数据。每个数据库都由不同的角色控制,我想在传输中保持它们的权限分开。

我尝试按照文档操作并使用单独的用户(有权访问相应的 PostgreSQL 角色)运行这些命令:

staging-user: pg_dump production_db > prod_db_file
production-user: psql --single-transaction staging_db < prod_db_file
Run Code Online (Sandbox Code Playgroud)

但我有几个错误:must be owner of extension plpgsqlsyntax error at or near。此外,我不确定这是否能达到我想要的效果。pg_dump 和 psql 命令有很多可选标志,我不知道应该使用哪些。(我已经尝试了多种标志组合,但到目前为止没有任何效果。)

注意:当我尝试上述命令时,我的临时数据库已经存在。

如何将生产数据移至暂存数据库?

dja*_*o09 2

2015 年 10 月 30 日更新:这个答案比我的旧答案更简单、更准确,为了简洁起见,我删除了旧答案。要查看旧答案,请查看编辑历史记录。

  1. 作为生产用户:pg_dump -Fc my_prod_db > prod_dump.db
  2. 删除并创建临时数据库
  3. 作为登台用户:pg_restore --no-owner --dbname my_staging_db path/to/prod_dump.db