PostgreSQL - 在pg_dump时刷新物质化视图

时间:2017-05-11 12:52:42

标签: postgresql-9.3 materialized-views pg-dump postgresql-10

(Postgres版本:9.3)

在没有任何解决方案的情况下搜索之后询问:

  • 我创建了一个简单的物化视图(实际上,我有一些)。

create

  • 我调用pg_dump来备份数据库。

psql my_db -c "CREATE MATERIALIZED VIEW my_view AS (SELECT * FROM my_table);"

  • 当pg_dump正在运行时,我尝试使用pg_dump -Fc my_db刷新视图。

REFRESH MATERIALIZED VIEW

只要pg_dump处于活动状态,psql my_db -c "REFRESH MATERIALIZED VIEW my_view;"语句就会挂起(保持“活动状态”)(这会使视图在REFRESH上挂起时更糟糕,我无法REFRESH以及)。 我的问题是:如何在执行转储时SELECT实现视图?

我不介意从转储中排除视图的数据,如果这会有帮助,我不需要保存数据。但我需要转储视图架构(REFRESH语句)。

我已经设置了一个脚本来排除转储中的所有m.views,但它也排除了它们的模式,并且它使我的dump命令复杂化到一个不合理的数量只是为了使这个工作,所以我正在寻找一个更简单的解决方案。

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以,回答我的问题:)

我移至pg_basebackup而不是pg_dump。当然它们不一样,主要是因为前者转储整个服务器数据,但对我来说,无论如何都要快得多,并且在运行时刷新m.views没有问题。