不反映基表更改的配置单元视图

wsxa1bj1  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(266)

我在Hive里有很多视图。大多数视图都是使用模式创建的 select * 而不是特定的列名。当从基表中删除一列时,所有这些视图都开始抛出 missing column 错误。我甚至不能做一个 select * from myview .
虽然我最初的视图创建文本是 select * ,配置单元似乎已将它们转换为扩展格式,如 select col1, col2, col3 etc .
是否有我应该启用的变通方法或设置,以便在不需要重新创建视图的情况下将更改反映在视图中。

py49o6xq

py49o6xq1#

配置单元正在使用存储的视图定义。
在sql:200n,视图定义应该在创建时冻结,这样,如果视图定义为selectfromt,其中t是一个包含两列a和b的表,那么以后从视图中选择的请求应该只返回列a和b,即使以后向表中添加了新的列c也是如此。大多数dbms产品都正确地实现了这一点。请参阅此设计文档中的更多详细信息:存储视图定义
所以,你需要表演 ALTER VIEW [db_name.]view_name AS select_statement; 命令以反映ddl更改。 Alter View As Select 更改视图的定义,该视图必须存在。语法与 CREATE VIEW 其效果与 CREATE OR REPLACE VIEW . 请在此处查看更多详细信息:alterview。

相关问题