更改 Redshift 视图以指向新表

Posted

技术标签:

【中文标题】更改 Redshift 视图以指向新表【英文标题】:Alter a Redshift View to point to a new table 【发布时间】:2020-10-14 05:55:24 【问题描述】:

我在 Redshift 中创建了一个简单的视图,即 select * from source_a with no schema binding。现在我有一个新表 source_b,我希望视图指向它,而不是没有新的列或数据类型。

如何在不放弃权限的情况下重新指向视图?

【问题讨论】:

【参考方案1】:

您再次运行CREATE,但包含OR REPLACE 语法。

CREATE OR REPLACE VIEW my_view AS …
WITH NO SCHEMA BINDING ;

您可以使用pg_get_viewdef 检索现有视图定义。

SELECT pg_get_viewdef('my_view', true);

【讨论】:

【参考方案2】:

首先看看创建视图文档页面 - https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html

您创建了一个后期绑定视图,该视图在执行时会检查表的权限,因此您需要确保您对该新表具有正确的权限 - “source_b”。这些后期绑定视图是对表的查找/引用,而不是数据库中的预定义链接。您也不能授予对后期绑定视图的列杆访问权限。否则权限的工作方式与常规视图相同。

要更改视图而不更改其权限,您将需要使用“创建或替换视图...”(参见上面的链接)来更新定义。请记住,新表的权限很重要。

【讨论】:

以上是关于更改 Redshift 视图以指向新表的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 node-redshift 从节点连接到 redshift 时超时

如何散列整个 Redshift 表?

DatagGrip 无法识别 Redshift 特定命令

Redshift 终止长时间运行的查询

MS SQL:通过包含新表中的其他列来更改索引视图

将 IntelliJ 连接到 Amazon Redshift